Angular 从 foreach 循环链接承诺
Angular chaining promises from foreach loop
我有一组照片文件需要上传到 Azure 云存储,我使用 foreach 循环调用上传,如下所示:
$scope.savetemplate = function () {
var imagePathsArray = [];
$scope.filesimage = [];
$scope.filesimage.push($scope.file1);
$scope.filesimage.push($scope.file2);
$scope.filesimage.push($scope.file3);
for (var i in $scope.filesimage) {
$scope.upload($scope.filesimage[i]);
}
$scope.data.Images = imagePathsArray ;
$http({
//after finish uploads i need to post the paths
//of all images to save into database
})
};
$scope.upload = function (file) {
Upload.upload({
url: '/uploadImage',
data: { file: file }
}).then(function (resp) {
imagePathsArray.push(resp.data);
})
};
resp.data returns 天蓝色存储路径,我需要将路径推入 imagePathsArray
我如何使用 Angular Promise 等待所有文件上传完成并且所有路径都存储在 imagePathsArray 中以便我可以继续
$scope.data.Images = imagePathsArray ;
这样我就可以获取数组中的路径并执行 $http post?
上传成功回调中,推送路径后:
imagePathsArray.push(resp.data);
if(imagePathsArray.length == $scope.filesimage.length){
pushtoDatabase();
}
在 pushtoDatabase
内调用 $http({ .... });
注意 :您可能想考虑上传失败的可能性。在这种情况下,您可以使用失败文件的计数器来解决 failCounter
,然后在 if 检查条件
if ((imagePathsArray.length + failCounter) == $scope.filesimage.length){....}
你可以用 $q.all 来做到这一点。
var promises = [];
for (var i in $scope.filesimage) {
promises.push(upload($scope.filesimage[i]));
}
$q.all(promises).then(function() {
$scope.data.Images = imagePathsArray ;
$http.post({
//after finish uploads i need to post the paths
//of all images to save into database
});
});
function upload(file) {
return Upload.upload({
url: '/uploadImage',
data: { file: file }
}).then(function (resp) {
imagePathsArray.push(resp.data);
})
};
我有一组照片文件需要上传到 Azure 云存储,我使用 foreach 循环调用上传,如下所示:
$scope.savetemplate = function () {
var imagePathsArray = [];
$scope.filesimage = [];
$scope.filesimage.push($scope.file1);
$scope.filesimage.push($scope.file2);
$scope.filesimage.push($scope.file3);
for (var i in $scope.filesimage) {
$scope.upload($scope.filesimage[i]);
}
$scope.data.Images = imagePathsArray ;
$http({
//after finish uploads i need to post the paths
//of all images to save into database
})
};
$scope.upload = function (file) {
Upload.upload({
url: '/uploadImage',
data: { file: file }
}).then(function (resp) {
imagePathsArray.push(resp.data);
})
};
resp.data returns 天蓝色存储路径,我需要将路径推入 imagePathsArray
我如何使用 Angular Promise 等待所有文件上传完成并且所有路径都存储在 imagePathsArray 中以便我可以继续
$scope.data.Images = imagePathsArray ;
这样我就可以获取数组中的路径并执行 $http post?
上传成功回调中,推送路径后:
imagePathsArray.push(resp.data);
if(imagePathsArray.length == $scope.filesimage.length){
pushtoDatabase();
}
在 pushtoDatabase
内调用 $http({ .... });
注意 :您可能想考虑上传失败的可能性。在这种情况下,您可以使用失败文件的计数器来解决 failCounter
,然后在 if 检查条件
if ((imagePathsArray.length + failCounter) == $scope.filesimage.length){....}
你可以用 $q.all 来做到这一点。
var promises = [];
for (var i in $scope.filesimage) {
promises.push(upload($scope.filesimage[i]));
}
$q.all(promises).then(function() {
$scope.data.Images = imagePathsArray ;
$http.post({
//after finish uploads i need to post the paths
//of all images to save into database
});
});
function upload(file) {
return Upload.upload({
url: '/uploadImage',
data: { file: file }
}).then(function (resp) {
imagePathsArray.push(resp.data);
})
};