Javascript AngularJS:循环POST请求并将每个索引传递到相关响应中
我正在尝试使用AngularJS执行多个http POST请求,我需要创建一个成功完成请求的对象—类似于这样:Javascript AngularJS:循环POST请求并将每个索引传递到相关响应中,javascript,angularjs,Javascript,Angularjs,我正在尝试使用AngularJS执行多个http POST请求,我需要创建一个成功完成请求的对象—类似于这样: var params = [1, 2, 3], url, i, done = {}; for (i in params) { url = '/dir/'+ params[i]; $http.post(url, {"some_request": "not important"}). success(function(respons
var params = [1, 2, 3],
url,
i,
done = {};
for (i in params) {
url = '/dir/'+ params[i];
$http.post(url, {"some_request": "not important"}).
success(function(response) {
done[params[i]] = 'successful';
});
}
done = {1: 'successful', 2: 'successful', 3: 'successful'};
我希望获得一个包含所有成功请求的对象,如下所示:
var params = [1, 2, 3],
url,
i,
done = {};
for (i in params) {
url = '/dir/'+ params[i];
$http.post(url, {"some_request": "not important"}).
success(function(response) {
done[params[i]] = 'successful';
});
}
done = {1: 'successful', 2: 'successful', 3: 'successful'};
但很明显,由于http请求的异步性质,我只能
done = {3: 'successful'};
因为当http请求返回响应时,循环已经完成,并且是它的最后一个值
这些请求的顺序并不重要,我不想链接它们(异步执行它们应该更快)。如何将循环索引传递到这些响应中?谢谢。这就可以了:
var params = [1, 2, 3],
url,
i,
done = {};
for (i in params) {
(function(p) {
url = '/dir/'+ params[p];
$http.post(url, {"some_request": "not important"}).
success(function(response) {
done[params[p]] = 'successful';
});
})(i);
}
另一个选择是关闭