我有一个将文件上传到服务器并返回一个promise的函数。 我想检查每个承诺何时完成并显示“成功部署文件名...”的日志。
我不关心承诺的顺序,但Q.all()对我没有帮助,因为它只在所有承诺完成时返回,或者在失败时快速失败。
我想写一些东西来检查我的一个承诺何时完成并显示日志。 由于每个文件都很大,我希望用户能够收到迄今已上传的内容的警报。
当我的一个文件失败时,用户会看到如下内容:
Successfully deployed file1.txt
Successfully deployed file2.txt
Failed deploying file3.txt
答案 0 :(得分:3)
为什么不简单地循环你的文件(或承诺)?
var files = ['file1.txt', 'file2.txt'/*, ...*/];
files.forEach(function (file) {
uploadFile(file).done(function () {
console.log('Successfully deployed ' + file);
}, function () {
console.log('Failed deployed ' + file);
});
});
答案 1 :(得分:0)
@ kamituel的答案非常有效。如果你需要快速失败的行为(正如你在评论中所要求的那样),你可以在失败时设置一个标志。
var failed = false;
var files = ['file1.txt', 'file2.txt'/*, ...*/];
files.forEach(function (file) {
uploadFile(file).done(function () {
if (failed) return;
console.log('Successfully deployed ' + file);
}, function () {
if (failed) return;
failed = true;
console.log('Failed deployed ' + file);
});
});