2
私は関数の配列を持っています。各関数は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()'を入れてみてください –
親の約束を解決するか、拒否しなければならないのですが、Ajaxリクエストコードを投稿することができます –
どこからでもuploadFile関数が呼び出されないようです。あなたはその関数を呼び出す必要があります。 –