現時点でこれに本当に苦労しているので、誰かが素晴らしいアドバイスを持っていれば. シンプルなものを複雑にしすぎているのは確かですが、見てみましょう。
以下を使用してファイルをサーバーにアップロードします
https://github.com/nervgh/angular-file-upload/wiki/Module-API
特定の種類のファイル用にファイル アップローダーのインスタンスをいくつか作成しています (それぞれに異なるアップロード URL が必要なため、1 つだけを使用することはできません)。
だから私は次のようなリストを持っています
var uploaders = [a list of file object uploaders]
私がやりたいことは、リストを繰り返し処理し、それぞれを呼び出しuploadAll()
、それぞれのファイルがアップロードされたら、スクリプトを続行することです。
uploadAll
問題は、関数が を実装しているとは思わないpromise
ため、次のコードを試すと、ファイルが正常にアップロードされる前に残りのスクリプトが続行されることです。
これが私が持っているものです
var deferred = $q.defer();
var uploaders = [my list of object uploaders]
var allUploads = uploaders.map(function(uploaders) {
var singleUploadPromise = uploaders.uploadAll();
return singleUploadPromise;
});
$q.all(allUploads).then(function() {
console.log('Finished uploading all files')
deferred.resolve('Finished uploading all files');
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
ファイルはアップロードされますが、スクリプトの残りの部分はアップロード前に実行されます。私が
console.log(allUploads)
アイテムのリストを取得しundefined
ます。明らかに私はここで間違っていますが、どのように前進するかについては確信が持てません.