承诺链中的条件控制流

问题描述 投票:0回答:1

我想写一个长承诺链,其中一些项目将根据条件被跳过。不幸的是,这是无效的语法:

function f(condition) {
    A()
    .then (B)
    if (condition) {
        .then(C)
        .then(D)
    }
    .then(E)
}

做我想做的事最优雅的方式是什么?我已经有了处理数据流的方法,所以我不担心 B 的结果和 D 的结果可能看起来不相似。我只关心控制流程。

javascript asynchronous promise
1个回答
0
投票

if
语句放在
.then()
函数中。

function f(condition) {
  A()
    .then(B)
    .then(arg => {
      if (condition) {
        return C(arg);
      } else {
        return D(arg)
      }
    })
    .then(E)
}
© www.soinside.com 2019 - 2024. All rights reserved.