Chr*_*ian 0 javascript promise
我不久前在某处读到过一个帖子,其中使用静态Promise方法(例如Promise.resolve()函数内部或Promise.reject()内部)async是反模式,但我似乎找不到它。
鉴于以下情况:
const asyncFunc = async (foo) => {
if (foo) return Promise.resolve()
return Promise.reject()
}
Run Code Online (Sandbox Code Playgroud)
这被认为是反模式吗?
使用Promise.resolveis 或许与其说是一种反模式,不如说是完全不必要的,因为从异步函数返回一个普通值将导致 Promise 返回解析为该值。
if (foo) return Promise.resolve()
Run Code Online (Sandbox Code Playgroud)
相当于
if (foo) return;
Run Code Online (Sandbox Code Playgroud)
和
if (foo) return Promise.resolve(5)
Run Code Online (Sandbox Code Playgroud)
相当于
if (foo) return 5;
Run Code Online (Sandbox Code Playgroud)
所以你不妨放弃Promise.resolve.
Promise.reject有点不同。如果你想拒绝函数返回的 Promise,你可以这样做throw <expression>,或者你可以这样做return Promise.reject<expression>- 两者都是等效的,而且我不认为在所有情况下都有任何具体的理由选择其中之一(尽管我会更喜欢,throw因为它更简洁)。
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |