条件异步代码模式

Conditional async code pattern

给定以下代码模式:

if (doAsyncCall) {
    asyncCall().then(after);
} else {
    after();
}

有没有更好的方法来处理应该始终 运行 但如果异步代码是 运行 的代码,应该等待它完成?

您可以创建一个空承诺:

const step1 = doAsyncCall ? asyncCall() : Promise.resolve();
step1.then(after);

您可能会考虑这样的事情:

let promise = Promise.resolve();

if (doAsyncCall) {
    promise = asyncCall();
}

promise.then(after);

这看起来很丑陋,但考虑到您可以使用这种模式,将承诺传递给函数而不是标志来指示是否应该进行调用,或者您可以将其分解到另一个函数中returns 异步调用承诺或已解决的承诺。

仅参考 after 一次,代码更干。