Node.js 处理一系列承诺
我有一个将文件上传到服务器并返回承诺的函数。 我想检查每个承诺何时完成,并显示“成功部署文件名…”的日志 我不关心承诺的顺序,但Q.all()对我没有帮助,因为它只在所有承诺都完成时返回,或者在一个承诺失败时快速失败 我想写一些东西,每当我的一个承诺完成并显示日志时进行检查。 由于每个文件都可能很大,我想提醒用户到目前为止上传了什么 当我的其中一个文件失败时,用户将看到如下内容:Node.js 处理一系列承诺,node.js,promise,q,Node.js,Promise,Q,我有一个将文件上传到服务器并返回承诺的函数。 我想检查每个承诺何时完成,并显示“成功部署文件名…”的日志 我不关心承诺的顺序,但Q.all()对我没有帮助,因为它只在所有承诺都完成时返回,或者在一个承诺失败时快速失败 我想写一些东西,每当我的一个承诺完成并显示日志时进行检查。 由于每个文件都可能很大,我想提醒用户到目前为止上传了什么 当我的其中一个文件失败时,用户将看到如下内容: Successfully deployed file1.txt Successfully deployed file
Successfully deployed file1.txt
Successfully deployed file2.txt
Failed deploying file3.txt
为什么不简单地循环你的文件(或承诺)
为什么不简单地循环你的文件(或承诺)
为什么不简单地循环你的文件(或承诺)
为什么不简单地循环你的文件(或承诺)
@卡米图尔的答案非常有效。如果您需要fail fast行为(如您在注释中所要求的),您可以在失败时设置一个标志
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);
});
});
@卡米图尔的答案非常有效。如果您需要fail fast行为(如您在注释中所要求的),您可以在失败时设置一个标志
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);
});
});
@卡米图尔的答案非常有效。如果您需要fail fast行为(如您在注释中所要求的),您可以在失败时设置一个标志
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);
});
});
@卡米图尔的答案非常有效。如果您需要fail fast行为(如您在注释中所要求的),您可以在失败时设置一个标志
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);
});
});
嗯,在测试之后,它并没有给我一个快速失败(也就是说,一旦其中一个文件失败,我想跳过其他承诺),而且我也无法知道什么时候一切都成功完成。你还有其他选择吗?嗯,在测试之后,它不会给我一个快速失败的机会(也就是说,一旦其中一个文件失败,我想跳过其他承诺),而且我也无法知道什么时候一切都成功完成。你还有其他选择吗?嗯,在测试之后,它不会给我一个快速失败的机会(也就是说,一旦其中一个文件失败,我想跳过其他承诺),而且我也无法知道什么时候一切都成功完成。你还有其他选择吗?嗯,在测试之后,它不会给我一个快速失败的机会(也就是说,一旦其中一个文件失败,我想跳过其他承诺),而且我也无法知道什么时候一切都成功完成。你还有别的选择吗?