条件异步代码模式
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
一次,代码更干。
给定以下代码模式:
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
一次,代码更干。