是否可以编写以顺序方式执行多个异步步骤的NodeJS代码,其中某些步骤基于条件语句执行或绕过?
让我尝试用伪代码编写一个例子。
想象一下你有类似
的东西 step1.then(step2).then(step3);
现在让我们添加一个选项:
var opt = true;
如何实现以下目标:
step1.then(opt && step2).then(step3);
或者,如果我们让中间说出两个不同的可能步骤:
step1.then(opt ? step2 : step3).then(step4);
修改
如果可选步骤在开头而不是?
(opt && step1).then(step2).then(step3);
如果有人可以提出一些建议或提出建议,那将是非常棒的!
由于
答案 0 :(得分:2)
假设step2
和step3
是函数返回一个promise有什么问题:
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。
promise2 = promise1.then(onFulfilled, onRejected);
如果
onFulfilled
或onRejected
返回值x
,请运行承诺解决程序[[Resolve]](promise2, x)
。