Storing result of AJAX in pure Javascript -
this question has answer here:
- how return response asynchronous call? 21 answers
i learning basics of ajax, , trying store result of call in variable. have data.txt file object:
[ { "id": "5688","name": "  jorge luis borges"}, { "id": "5799","name": "  lewis carroll"} ] and calling call:
var object = "no object"; function requestfunction(url){     var request = new xmlhttprequest();     request.open("get", url, true);     request.addeventlistener("load", function() {         object = this.response;     });     request.send(null);     return object; }; console.log(requestfunction("data.txt")); i don't know why, result = this.response doesn't affect variable want store result, , console outputs original value: no object.
any idea why?
edit: have been reading fantastics responses in how return response asynchronous call?, , updated function include callback that, when called, output result:
function requestfunction(url){     var request = new xmlhttprequest();     request.open("get", url, true);     request.addeventlistener("load", function() {         outputfunction(this.response); // callback     });     request.send(null); };  // callback function outputfunction(a){     console.log(a); };  requestfunction("data.txt"); it works. now, inside callback, want store result in variable, , use outside function. like:
// callback var storedobject = "empty"; function outputfunction(a){     storedobject = a;     return storedobject; }; but again, doesn't works. ¿is because same reason previous code?
request.addeventlistener("load", function() {         object = this.response;     }); is called asynchronously
object = this.response; would updated later, code
console.log(requestfunction("data.txt")); doesn't wait finish updating, hence prints orignal value
wiki
Comments
Post a Comment