循环内部的Javascript异步调用
我在JavaScript中从for循环内部进行异步API调用,我一直在思考如何理解结果。这段代码对API进行了正确的调用(我通过查看fiddler知道这一点) 但是,当reslts返回并在console.log(translation)中打印结果时,我只看到上次API调用的结果 我知道这是一个异步问题,但如何最好地处理来自xmlhttp2的传入响应循环内部的Javascript异步调用,javascript,for-loop,asynchronous,google-chrome-extension,Javascript,For Loop,Asynchronous,Google Chrome Extension,我在JavaScript中从for循环内部进行异步API调用,我一直在思考如何理解结果。这段代码对API进行了正确的调用(我通过查看fiddler知道这一点) 但是,当reslts返回并在console.log(translation)中打印结果时,我只看到上次API调用的结果 我知道这是一个异步问题,但如何最好地处理来自xmlhttp2的传入响应 for (var j = 0; j <= current; j++) { //some preprocessi
for (var j = 0; j <= current; j++) {
//some preprocessing
var xmlhttp2=new XMLHttpRequest();
xmlhttp2.onreadystatechange=function()
{
if (xmlhttp2.readyState==4 && xmlhttp2.status==200)
{
var translation = xmlhttp2.responseText;
console.log(translation);
}
}
var sendparam = "http://api.foo.do.stuff.etc";
xmlhttp2.open("GET",sendparam,true);
xmlhttp2.send();
}
}
for(var j=0;j算出了。闭包FTW
for (var j = 0; j <= current; j++) {
//some preprocessing
(function (j) {
var xmlhttp2=new XMLHttpRequest();
xmlhttp2.onreadystatechange=function()
{
if (xmlhttp2.readyState==4 && xmlhttp2.status==200)
{
var translation = xmlhttp2.responseText;
console.log(translation);
}
}
var sendparam = "http://api.foo.do.stuff.etc";
xmlhttp2.open("GET",sendparam,true);
xmlhttp2.send();
})(j);
}
for(var j=0;j)使用this.responseText
而不是xmlhttp2.responseText
,后者具有