Promise.resolve() 内部异步函数
Promise.resolve() inside async function
我前一段时间在某个地方读到一个 SO 线程,在 async
函数中使用像 Promise.resolve()
或 Promise.reject()
这样的静态 Promise
方法是反模式,但我可以好像没找到
鉴于以下情况:
const asyncFunc = async (foo) => {
if (foo) return Promise.resolve()
return Promise.reject()
}
这是否被视为反模式?
使用 Promise.resolve
与其说是 反模式 ,不如说是 完全没有必要 ,因为返回的是普通值来自异步函数的 Promise 将 returns 解析为该值。
if (foo) return Promise.resolve()
相当于
if (foo) return;
和
if (foo) return Promise.resolve(5)
相当于
if (foo) return 5;
所以你最好不要再 Promise.resolve
.
Promise.reject
有点不同。如果你想拒绝函数 returns 的 Promise,你可以做 throw <expression>
,或者你可以做 return Promise.reject<expression>
- 两者是等价的,我认为没有任何具体原因在所有情况下都更喜欢其中之一(尽管我更喜欢 throw
因为它更简洁)。
我前一段时间在某个地方读到一个 SO 线程,在 async
函数中使用像 Promise.resolve()
或 Promise.reject()
这样的静态 Promise
方法是反模式,但我可以好像没找到
鉴于以下情况:
const asyncFunc = async (foo) => {
if (foo) return Promise.resolve()
return Promise.reject()
}
这是否被视为反模式?
使用 Promise.resolve
与其说是 反模式 ,不如说是 完全没有必要 ,因为返回的是普通值来自异步函数的 Promise 将 returns 解析为该值。
if (foo) return Promise.resolve()
相当于
if (foo) return;
和
if (foo) return Promise.resolve(5)
相当于
if (foo) return 5;
所以你最好不要再 Promise.resolve
.
Promise.reject
有点不同。如果你想拒绝函数 returns 的 Promise,你可以做 throw <expression>
,或者你可以做 return Promise.reject<expression>
- 两者是等价的,我认为没有任何具体原因在所有情况下都更喜欢其中之一(尽管我更喜欢 throw
因为它更简洁)。