所以我有一个函数,它应该立即返回一个被拒绝或解决的Promise,也就是说,它基本上是一个我想“中止”的同步函数。
在这种情况下,我通常会这样做:
func() {
// some code to check for an error
if (hasError)
return Promise.reject(new Error("Failure"));
}
return Promise.resolve("Success");
}
现在,有了ES2017中的“异步”功能,我似乎也可以做到这一点:
async func() {
// some code to check for an error
if (hasError)
throw new Error("Failure");
}
return "Success";
}
因此,我基本上只是为了“简化”我的函数而使用async
,而不是在函数体中使用await
。在我看来,这个变体应该做完全相同的事情。我说的对吗?还有其他我不知道的副作用吗?
我想我更喜欢这个模式,因为它有点短,单从函数定义就很清楚它是异步的,任何JavaScript错误(如类型错误)也会导致拒绝,这会使我的整个代码在出现意外错误的情况下做出更优雅的反应。
https://stackoverflow.com/questions/50660103
复制相似问题