【发布时间】:2019-06-13 08:37:31
【问题描述】:
我正在使用 ESLint,但出现此错误:每个 then() 都应该返回一个值或抛出 promise/always-return
代码:
return somePromise.then(result => {
console.log(result);
}).catch(error => {
console.error(error);
});
我为什么要兑现这个承诺?显然不需要它,因为我只想在日志中打印结果,仅此而已。这条规则似乎不适用于所有情况。 我正在编写一个 Firebase 数据库触发器,我认为它只对知道承诺是否已解决感兴趣。
【问题讨论】:
-
如果您认为该规则没有用,请将其禁用。但 IMO 最好总是返回一个值,否则承诺的消费者会将
undefined视为参数,这很可能会造成混淆。 -
我认为您正在做两件相互冲突的事情:1)返回承诺和 2)不返回值。如果您要返回承诺,则返回其值并重新抛出
.catch()。如果您不关心传递值,那么您可能也不需要返回承诺。 -
我需要返回承诺,因为 Firebase 函数需要知道我的异步任务已经完成。 Firebase 对解析值中的内容没有任何用处。这就是为什么我没有从 then() 函数返回任何东西。
-
@harsh989 Firebase 是否也不需要区分成功和错误情况?
标签: javascript node.js ecmascript-6 promise eslint