javascript - Angular - For 循环 HTTP 回调/ promise

标签 javascript angularjs loops http

我正在尝试编写一个循环来执行多个 http 请求并将每个响应添加到列表中。

但是,我认为我的做法并不正确。

我认为我没有正确地履行要求的 promise 。 for 循环后的控制台日志显示 myList 数组为空。

代码:

var _myList = []

function getStuff() {

    var deferred = $q.defer()

    var url = someUrl

    $http.get(url).success(function(response) {

        if ( response.array.length > 0 ) {

            // loop starts here
            for ( var i=0; i < response.array.length; i++ ) {

                getThing(response.array[i].id);

            };
            // check the varibale here

            console.log(_myList);

            deferred.resolve('Finished');

        } else {

            deferred.resolve('No stuff exists');

        };

    }).error(function(error) {

        deferred.reject(error);

    });

    return deferred.promise;

};

function getThing(thindId) {

    var deferred = $q.defer()

    var url = someUrl + thingId;

      $http.get(url).success(function(response) {

            _myList.push(response);

            deferred.resolve(response);

      }).error(function(error) {

            deferred.reject(error);

      });       

    return deferred.promise;

};

最佳答案

您可以按如下方式简化代码:

var allThings = response.array.map(function(id){
  var singleThingPromise = getThing(id);
  //return a single request promise
  return singleThingPromise.then(function(){
    //a getThing just ended inspect list
    console.log(_myList);
  })
});
$q.all(allThings).then(function(){
  //only resolve when all things where resolved
  deferred.resolve('Finished');
}, function(e){
  deferred.reject('Something went wrong ' + e);
});

关于javascript - Angular - For 循环 HTTP 回调/ promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34662067/

相关文章:

java - 这些操作中哪一个在节省内存和 CPU 方面更好? ( java )

MySql PREPARE stmt FROM [function argument] 和 CURSORs

Javascript 原型(prototype)函数 : decimal time value to a time string

javascript - jquery、asp.net ajax、javascript 根本不执行

javascript - 通过调用 angularjs 的 httprequest 访问 json 文件中的第 i 个元素

javascript - angular ui-grid 排序图标显示不正确

javascript - 使用 AngularJS $resource 发布

javascript - 使用正则表达式匹配不在 img 标签中的模式

javascript - 使用 Angularjs 进行无服务器 Jade 模板

c - 为什么这些循环会奇怪地增加?