与promises同步for循环

时间:2014-05-28 03:08:30

标签: angularjs promise

我有以下功能,但不是我想要的,因为每次迭代都需要之前的迭代结果。

有很多类似的问题,但我发现很难将解决方案缩小到一种模式。

如何重写以下函数,以便每个循环迭代“等待”之前的那个?

$scope.updateBarcode = function() {
  var itemcodes = $scope.itemcode.split(';');
  // doc is JSPDF document, fetch will add a new page to the supplied doc.
  var doc;
  //fetch will unshift the returned doc onto the supplied array.
  var result = [];
  for (var i = 0; i < itemcodes.length; i++) {
    var promise = $scope.fetch(doc, itemcodes[i],result);
    promise.then(function(){
      doc = result[0];
      if (i >= itemcodes.length) {
        doc.save(itemcodes[0] + '.pdf');
      };
    })
  };
}

1 个答案:

答案 0 :(得分:3)

您需要将then()的新承诺分配给您的变量,以便建立一个链:

promise = promise.then(...);