【发布时间】:2015-02-26 21:16:08
【问题描述】:
我正在从 JavaScript 的 for 循环内部进行异步 API 调用,但我不知道如何理解结果。这段代码对 API 进行了正确的调用(我从 fiddler 中知道这一点)。
但是,当 reslts 返回并在 console.log(translation) 中打印结果时,我只能看到最后一次 API 调用的结果。
我知道这是一个异步问题,但我应该如何最好地处理来自 xmlhttp2 的传入响应?
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();
}
}
【问题讨论】:
-
使用
this.responseText代替xmlhttp2.responseText,后者具有loop scope problem
标签: javascript for-loop asynchronous google-chrome-extension