目前真的在为此苦苦挣扎,所以如果有人有任何建议,那就太好了。很确定这是我把简单的事情复杂化的一个例子,但我们会看到的!
使用以下内容将文件上传到服务器
https://github.com/nervgh/angular-file-upload/wiki/Module-API
我正在为某些类型的文件创建几个文件上传器实例(不能只使用一个,因为我需要为每个文件提供不同的上传 URL)
所以我有一个类似的列表
var uploaders = [a list of file object uploaders]
我想要做的是遍历列表,调用uploadAll()
每一个,然后在每个文件上传后,继续执行脚本。
问题是我认为该uploadAll
函数没有实现 a 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
项目清单。很明显我在这里出错了,但我不确定如何前进。