NodeJS与条件语句的顺序异步

时间:2014-12-16 19:18:59

标签: javascript node.js asynchronous promise q

是否可以编写以顺序方式执行多个异步步骤的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);

如果有人可以提出一些建议或提出建议,那将是非常棒的!

由于

1 个答案:

答案 0 :(得分:2)

假设step2step3是函数返回一个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。

Promises/A+: The then Method

  

promise2 = promise1.then(onFulfilled, onRejected);

     

如果onFulfilledonRejected返回值x,请运行承诺解决程序[[Resolve]](promise2, x)