【发布时间】:2017-05-11 10:58:51
【问题描述】:
我有一个函数数组,其中每个函数从 ajax 调用返回 promise。
var promises = [];
if (form.$valid) {
Object.keys($scope.Model.Data.FormFiles).forEach(function (key) {
var file = $scope.Model.Data.FormFiles[key];
function uploadFile(){
var deferred = $q.defer();
var upload = Upload.upload({
url: "/api/ir/funnelApi/UploadFile",
data: { file: file }
});
upload.then(function (response) {
// do something
deferred.resolve(response.statusText);
}, function (error) {
deferred.reject(error.data);
}, function (evt) {
});
return deferred.promise;
}
promises.push(uploadFile);
});
}
我要做的是,如果所有文件都已成功上传,然后做点什么。
$q.all(promises).then(function (responses) {
// do something
}, function (errors) {
// if any of the file upload fails, it should come here
});
但问题是 ajax 从未触发,$q.all 总是通过函数数组移动到成功。
我做错了什么??
【问题讨论】:
-
它会进入
deferred.resolve(response.statusText);吗?试着把console.log()放在那里 -
为了使父 Promise 工作必须被解决或拒绝,你能发布 Ajax 请求代码
-
似乎没有从任何地方调用uploadFile函数。您需要调用该函数。
标签: javascript angularjs ajax promise q