gpt4 book ai didi

javascript - 异步请求进入for循环angular.js

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:55 26 4
gpt4 key购买 nike

我有一个数组,我需要通过 http post 请求将数组的值一个一个地发送到 webservice。对于 node.js,我使用“async”包来做到这一点,例如:async.eachSeries 做得很好,我怎么能为 angular.js 做同样的事情,我的普通异步代码;

//this code sends all queries of array (maybe  5.000 request at same time , it is hard to process for webservice :=) ) at same time and wait for all responses. 
//it works but actually for me , responses should wait others at end of loop should work one by one
//like async.eachSeries module!

for (var i = 0; i < myArr.lenght; i++) {
(function (i) {
var data = {
"myQuery": myArr[i].query
};
$http.post("/myServiceUrl", data).success(function (result) {
console.log(result);
});
})(i);
}

Matt WayChris L 都回答正确 ,您可以调查 Chris 的回答以了解 for 循环中的异步到同步函数。

最佳答案

您可以使用 $q 通过将 promise 链接在一起来创建类似的需求。例如:

var chain = $q.when();
angular.forEach(myArr, function(item){
chain = chain.then(function(){
var data = {
myQuery: item.query
};
return $http.post('/myServiceUrl', data).success(function(result){
console.log(result);
});
});
});

// the final chain object will resolve once all the posts have completed.
chain.then(function(){
console.log('all done!');
});

本质上,您只是在前一个 promise 完成后运行下一个 promise 。在此强调的是,根据您的问题,每个请求都会等到前一个请求完成。

关于javascript - 异步请求进入for循环angular.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33181502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com