首页 > 解决方案 > 为什么在每种情况下我都应该从 .then() 返回?

问题描述

我正在使用 ESLint,但出现此错误:每个 then() 都应该返回一个值或抛出 promise/always-return

代码:

return somePromise.then(result => {
    console.log(result);
}).catch(error => {
    console.error(error);
});

我为什么要从这个承诺中回来?显然没有必要,因为我只想在日志中打印结果,仅此而已。这条规则似乎不适用于所有情况。我正在编写一个 Firebase 数据库触发器,我相信它只对知道承诺是否已解决感兴趣。

标签: javascriptnode.jsecmascript-6promiseeslint

解决方案


eslint-plugin-promise规则的存在是为了防止由于未链接的 Promise 导致的错误:

return somePromise.then(result => {
   anotherPromise.then(...);
});

如果您认为您无法从此规则中受益,并且它只会使您的代码中充满额外的return语句或eslint-disable-*注释,请禁用它。

Bluebird 以防止此类错误而闻名,它会在存在嵌套的未链接承诺时发出警告。


推荐阅读