循环内部的Javascript异步调用
Javascript async call inside for loop
我正在JavaScript中从for循环内部进行异步API调用,我一直在思考如何理解结果。这段代码对API进行了正确的调用(我从fiddler中了解这一点)。
然而,当结果返回并且我在console.log(翻译)上打印结果时,我只看到最后一个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();
}
}
想明白了。关闭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);
}
相关文章:
- 如何使用异步调用更改工厂的变量
- 使变量可用于不带闭包的异步调用
- 需要收集Javascript nodejs异步调用
- 如何使用jQuery等待来自回调的异步调用
- 使用模态库从嵌套的异步调用中生成javascript同步代码
- 在forEach内部进行异步调用
- jQuery没有指定异步调用级别async:false
- SPA异步调用在IE 11中不起作用
- Ember.js-模型find()方法中的异步调用
- Javascript/JQuery处理并发/异步调用和数据竞争
- 在异步调用返回之前隐藏页面
- ExtJs 处理异步调用
- ES6:在异步调用中使用生成器
- Angular js - 异步调用 $scope.users 后不更新模态值
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- 使用 AngularJS 的异步调用
- 循环内部的Javascript异步调用
- 使用Canvas和ForEach处理异步调用
- JavaScript/promise,对sharepoint的多个异步调用