【发布时间】:2018-01-13 15:27:18
【问题描述】:
返回承诺的函数不应该抛出异常,而是拒绝承诺,但确保始终如此的最佳做法是什么?例如,即使我有这样一个极其简单的类方法......
foo(x) {
return this.promiseReturningApi.someMethod('bar', x);
}
...如果this.promiseReturningApi 未定义或someMethod 不是函数(除非它在promise 链中的第一个函数之后调用),则可能引发异常。
为了确保永远不会抛出异常,是否有必要始终使用这样的 try-catch 块:
foo(x) {
try {
return this.promiseReturningApi.someMethod('bar', x);
} catch (e) {
return Promise.reject(e);
}
}
(或者使用Promise.resolve().then(() => this.promiseReturningApi.someMethod('bar', x))之类的东西)
对于任何将返回承诺的函数,或者如何确保不抛出异常?
【问题讨论】:
-
foo是我给出的一个返回承诺的函数的示例,因为它只是返回返回承诺的函数的返回值。即便如此简单,foo本身也可能抛出异常,那么是否有必要将 foo 的主体包围在 try-catch 块中? -
这就是 Bluebird
Promise.try()的用途。
标签: javascript promise es6-promise