javascript - NodeJS 带有条件语句的顺序异步

标签 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);

如果有人能提供一些线索或提出建议,那就太棒了!

谢谢

最佳答案

假设 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);

If either onFulfilled or onRejected returns a value x, run the Promise Resolution Procedure [[Resolve]](promise2, x).

关于javascript - NodeJS 带有条件语句的顺序异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512244/

相关文章:

javascript - ui slider jQuery 中的 event.target

node.js - Node.js 中的异步收集方法

javascript - 如何使用 jQuery 从网页中删除复制内容的内联样式?

javascript - Angular $http 在 404 上调用成功

java - Jquery Ajax 将 JSON 发布到服务器不起作用

node.js - 为什么我在生产环境中 deproy Next.js 示例项目时 CSS 不起作用?

javascript - 使用带有 Javascript 的 TypeORM 快速路由

node.js - Redis 发布/订阅设计问题

c++ - 如何在 C++ 中异步读/写?

javascript - Meteor 方法向客户端返回 undefined (异步)