【发布时间】:2020-07-11 05:29:37
【问题描述】:
我有一个用例来解决 Promise 而不返回它。在内部捕获错误,但不希望调用者等待承诺解决。
doSomething()
{
Promise.resolve()
.then(() => {
// do something.
})
.catch(reason => {
this.logger.error(reason);
});
}
收到此错误:
(node:2072) Warning: a promise was created in a handler at internal/timers.js:439:21 but was not returned from it, see http://. goo.gl/rRqMUw
at Function.Promise.cast (.../node_modules/bluebird/js/release/promise.js:225:13)
【问题讨论】:
-
这不是错误,而是警告。你可以忽略它。
-
我将其称为“即发即忘”异步操作,您不会通知调用者。这些肯定有一些合法的用例(尽管不是很常见)。在适当的情况下没有任何问题。只是忽略警告。警告可能存在,因为 98-99% 的时间这是一个编码错误。
-
我明白,但问题是如何摆脱警告。数以千计的此类警告将使识别合法错误/警告变得困难
-
在调用者中尝试/捕获?