Javascript 带条件语句的NodeJS顺序异步
是否可以编写以顺序方式执行多个异步步骤的NodeJS代码,其中一些步骤根据条件语句执行或绕过 让我试着用伪代码编写一个示例 想象一下你有Javascript 带条件语句的NodeJS顺序异步,javascript,node.js,asynchronous,promise,q,Javascript,Node.js,Asynchronous,Promise,Q,是否可以编写以顺序方式执行多个异步步骤的NodeJS代码,其中一些步骤根据条件语句执行或绕过 让我试着用伪代码编写一个示例 想象一下你有 step1.然后(step2).然后(step3) 现在,让我们添加一个选项: var opt=true 如何实现以下目标: step1。然后(opt&&step2)。然后(step3) 或者,如果我们在中间有两个不同的可能步骤: step1.然后(opt?step2:step3).然后(step4) 编辑 如果可选步骤是在开头 (选择和步骤1)。然后(步骤2
step1.然后(step2).然后(step3)代码>
现在,让我们添加一个选项:
var opt=true代码>
如何实现以下目标:
step1。然后(opt&&step2)。然后(step3)代码>
或者,如果我们在中间有两个不同的可能步骤:
step1.然后(opt?step2:step3).然后(step4)代码>
编辑
如果可选步骤是在开头
(选择和步骤1)。然后(步骤2)。然后(步骤3)代码>
如果有人能透露一些信息或提出一些建议,那就太棒了
谢谢假设step2
和step3
是返回承诺的函数,那么问题是什么:
step1.then(function() {
if( opt ) {
return step2();
} else {
return step3();
}
})
.then(step4);
编辑
您的第一个示例step1。然后(opt&&step2)。然后(step3)代码>将如下所示:
step1.then(function() {
if( opt ) {
return step2();
}
})
.then(step3);
如果没有返回任何内容,则返回未定义的。对于每个不是承诺的返回值,库将创建一个用该值解析的承诺
:
promise2=promise1。然后(一旦履行,一旦拒绝)代码>
如果onCompleted
或onRejected
返回值x
,请运行承诺解决过程[[Resolve]](promise2,x)
正如我将要写的,这是正确的方法。这似乎正确地处理了我问题中的第二个例子。但是你会如何管理第一个呢<代码>步骤1。然后(选择和步骤2)。然后(步骤3)
如果我理解正确,当var opt=false
时,此案例不会返回承诺。有什么想法吗?谢谢!这是我遗漏的一点信息:)我不知道如果返回值不是承诺值,库会自动生成承诺。最后一个问题:如果一开始就有“可选步骤”,会发生什么?在伪代码(opt&&step1)。然后(step2)。然后(step3)
@Pensierinmusica:然后使用Q(opt&&step1())。然后(…)
可能重复:(现在不关闭,因为你已经得到了答案)当你想要计算opt
时,Dpends打开。如果它是静态已知的,您的三元运算符将已经工作,opt&&
可以写成(opt?step1.then(step2):step1.then(step3)
或step1.then(opt?step2:function id(x){return x;})。然后(step3)