我有这个链:
phase_one(files).then(phase_two).then(phase_three).then(phase_four);
每个阶段都会收到包含目标文件的数组。在每个阶段中,我都有这段默认代码:
return Promise.map(files, function(file) {
// some code here
}, {
concurrency: 3000
});
问题是.. phase_two是同步的...但我仍然想要使用链我不应该使用Promise.map。
我想知道蓝鸟是否有任何可以帮助我的事情。我在文档中搜索,但我没有找到。
感谢。
答案 0 :(得分:0)
phase_two
可以只是一个返回值的函数。链条将继续正常。
phase_one(files).then(phase_two).then(phase_three).then(phase_four);
function phase_two(input) {
// do something
return result;
}
.then()
处理程序可以是同步的,也可以是异步的。如果它是异步的,那么它必须返回一个promise。如果它是同步的,它只能返回一个值,该值将成为传递给链的下一部分的值。
链中的第一个链接必须返回一个promise(以启动链)。如果phase_one()
是同步的,并且您希望保持之前的结构,那么您可以return Promise.resolve(data);
内的phase_one()
。这将使返回值成为具有.then()
处理程序的承诺。