Angularjs 带承诺的同步for循环
我有下面的函数可以工作,但不是我想要的那样,因为每次迭代之前都需要迭代的结果 有很多类似的问题,但我发现很难将解决方案简化为一种模式 如何重写下面的函数,使每个循环迭代“等待”前面的一个Angularjs 带承诺的同步for循环,angularjs,promise,Angularjs,Promise,我有下面的函数可以工作,但不是我想要的那样,因为每次迭代之前都需要迭代的结果 有很多类似的问题,但我发现很难将解决方案简化为一种模式 如何重写下面的函数,使每个循环迭代“等待”前面的一个 $scope.updateBarcode = function() { var itemcodes = $scope.itemcode.split(';'); // doc is JSPDF document, fetch will add a new page to the supplied doc.
$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');
};
})
};
}
$scope.updateBarcode=function(){
var itemcodes=$scope.itemcode.split(“;”);
//文档是JSPDF文档,fetch将向提供的文档添加新页面。
var-doc;
//fetch将取消将返回的文档移动到提供的数组中。
var结果=[];
对于(变量i=0;i=itemcodes.length){
doc.save(itemcodes[0]+'.pdf');
};
})
};
}
您需要将then()
中的新承诺分配给变量,以便构建一个链:
promise = promise.then(...);
另一个问题:Javascript没有块作用域
i
不是你想象的那样。你有什么理由不想并行执行所有i/O吗?@BenjaminGruenbaum我使用的库(jsPDF)目前不支持将完整文档合并在一起。所以每次迭代之前都需要迭代的结果。@bcooper好吧,你仍然可以并行获取它们,然后只按顺序合并它们,不是吗?@BenjaminGruenbaum好主意。如果我返工其他函数,我就不会有这个问题。谢谢