【问题标题】:Is it ok to ignore the promise returned by the process method of a bull queue?可以忽略牛队的 process 方法返回的 promise 吗?
【发布时间】:2020-09-22 20:55:50
【问题描述】:

我使用bull 库来设置处理队列,当我对现有队列使用process 方法时,我收到警告,因为此方法返回一个承诺。我注意到公牛的文档忽略了这个返回值,我想知道忽略这样的承诺是否安全。

其他小问题,如果此功能失败,我能期待什么? 如果我需要等待它完成,这会导致问题,因为我必须到处等待结果,有没有办法防止这种情况?

【问题讨论】:

  • 对于他们的问题跟踪器来说听起来像是一个问题,缺乏适当的文档绝对值得报告。

标签: javascript node.js promise bull.js


【解决方案1】:

https://github.com/OptimalBits/bull/issues/1688(2020 年 4 月)中,提交者 manast 用“理论上当队列关闭时”回答 Zikoel 的问题“当Queue.process 返回的承诺得到解决时我不清楚”。因为process 启动队列as dprentis notes,所以promise 代表队列本身的状态。从上周开始,该问题就得到了积极的团队参与,因此它可能与维护者当前的理解或意图准确无误。

为方便起见,这里是Queue.process documentation 的链接。你是对的,它没有证明或确认调用process 的返回Promise,尽管非常小心地规定了要传入的processor 函数的Promise 返回要求。

粗略看一下代码 (Queue.run),似乎process 专门解决了当队列的关闭解决了作为对process 的一次调用。但是,测试似乎大多忽略返回的 Promise 或将其用于chain catch to signal test completion;使用返回的承诺 seem to be suppressed 或其他例外的少数示例。由于该行为似乎没有正式记录且未经测试,因此您可能不想严重依赖它。

尽管忽略返回的 Promise(如文档和测试中所示)或 await 其中任何一个以被动检测队列关闭似乎都不是问题,但您也可以通过收集所有返回的承诺到 Promise.all 调用并链接 catch 以记录任何错误。

【讨论】:

    猜你喜欢
    • 2014-12-09
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多