我在使用$ q和承诺方面遇到了麻烦 我这样做:
for (var i = 0; i<$scope.products.length; i++){
var product = $scope.products[i];
promises.push(Sale.save(product,function(result){
$scope.listOfProducts.push(result);
}));
}
$q.all(promises).then(function() {
echo('done');
});
});
我的问题是在所有Sale.save完成之前调用echo(&#39; done&#39;)。 我不知道为什么。
如果有人知道......
谢谢
答案 0 :(得分:1)
我假设Sale
是一种资源,如果是这种情况,你需要以不同的方式处理这个承诺。
试试这个:
for (var i = 0; i<$scope.products.length; i++){
var product = $scope.products[i];
promises.push(Sale.save(product).$promise.then(function(result){
$scope.listOfProducts.push(result);
return result;
}));
}
$q.all(promises).then(function(results) {
echo('done');
});
});
答案 1 :(得分:0)
Here is使用$timeout
来模拟每个函数进程的延迟的粗略示例。
您应该尝试返回独立运行循环上的每个值,以便将函数推送到promise队列中:
promises.push($scope.testFuncToResolve(i).then(function (result) {
//extra stuff here
return result;
}));