是否可以编写以顺序方式执行多个异步步骤的 NodeJS 代码,其中某些步骤根据条件语句执行或绕过?
让我尝试用伪代码编写一个示例。
想象一下,你有类似的东西
step1.then(step2).then(step3);
现在让我们添加一个选项:
var opt = true;
如何实现以下目标:
step1.then(opt && step2).then(step3);
或者,如果我们在中间说 2 个不同的可能步骤:
step1.then(opt ? step2 : step3).then(step4);
编辑
如果可选步骤是在开始时?
(opt && step1).then(step2).then(step3);
如果有人能阐明一些信息或提出建议,那就太棒了!
谢谢
假设step2
和step3
是返回承诺的函数,有什么问题:
step1.then(function() {
if( opt ) {
return step2();
} else {
return step3();
}
})
.then(step4);
编辑
您的第一个示例step1.then(opt && step2).then(step3);
如下所示:
step1.then(function() {
if( opt ) {
return step2();
}
})
.then(step3);
如果您不返回任何东西,则undefined
将被退回。对于每个不是 Promise 的返回值,库将创建一个使用该值解析的 Promise。
承诺/A+: 然后的方法:
promise2 = promise1.then(onFulfilled, onRejected);
如果
onFulfilled
或onRejected
返回值x
,请运行承诺解决过程[[Resolve]](promise2, x)
。