【问题标题】:Bluebird promise without a then蓝鸟诺言无言
【发布时间】:2016-11-08 03:48:22
【问题描述】:

用例是:我有一个事件处理程序进行一些处理。它调用一个返回承诺的函数。我需要保证该功能最终完成或失败,但是,之后我不需要做任何额外的处理。这似乎可行,但看起来是不好的做法:

function onMyEvent() {
  return promisifiedFunction()
  .catch( //log error );
}
function someFunction() {
  emit(‘myevent’);
}

在没有 then 的情况下进行 catch 是不好的做法吗?它似乎工作正常。

我认为我也不需要return,因为我可以即发即弃,但我认为如果我想捕捉错误,就需要它

【问题讨论】:

  • 1. 只有 catch 和 2. 不使用 return 都很好,也不错。事实上,在不需要时添加 thenreturn 可能被认为是不好的做法,因为这可能会导致代码混乱。

标签: node.js bluebird


【解决方案1】:

使用承诺,使用.then.catch 运行承诺。或者至少开始运行它。 .catch 函数只是 Promise 的不同路径,即发生异常时。

如果你在没有.then 的情况下运行一个promise,这个promise 将静默解析并且仍然可以进入.catch 函数。

如果你在没有.catch 的情况下运行一个promise,所有.then 函数仍然工作/链,并且任何异常都会抛出。

你所做的没问题,如果你不关心结果或者没有链接承诺,你甚至可能不需要 return 语句。

【讨论】:

  • “使用 .then 或 .catch 运行承诺。” 不正确。创建 Promise 本身就是运行它的原因。调用 thencatch 只会为承诺解决方案附加回调
猜你喜欢
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 2014-11-06
  • 2015-09-06
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多