【发布时间】:2016-04-24 23:41:09
【问题描述】:
目前真的在为此苦苦挣扎,所以如果有人有任何建议,那就太好了。很确定这是我把简单的事情复杂化的一个例子,但我们会看到的!
使用以下方式将文件上传到服务器
https://github.com/nervgh/angular-file-upload/wiki/Module-API
我正在为某些类型的文件创建多个文件上传器实例(不能只使用一个,因为我需要为每个文件提供不同的上传 URL)
所以我有一个类似的列表
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 项目的列表。很明显我在这里出错了,但我不确定如何继续前进。
【问题讨论】:
-
我在 ES6 方面不是最好的,但我认为 uploadAll() 不会返回任何东西github.com/nervgh/angular-file-upload/blob/master/src/services/…
标签: javascript angularjs file-upload angular-file-upload