AngularJS:循环 POST 请求并将每个索引传递到相关响应中

2023-12-02

我正在尝试使用 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(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);
}

另一种选择是关闭。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:循环 POST 请求并将每个索引传递到相关响应中 的相关文章

随机推荐