[英]Is it ok to ignore the promise returned by the process method of a bull queue?
我使用bull库设置处理队列,当我对现有队列使用process
方法时,我收到警告,因为此方法返回 promise。我注意到 bull 的文档忽略了此返回值,我想知道它是否安全忽略这样的 promise。
其他小问题,如果这个function失败了我能期待什么? 如果我需要等待它完成,这会导致问题,因为我必须到处等待结果,有没有办法防止这种情况发生?
在https://github.com/OptimalBits/bull/issues/1688 (2020 年 4 月)中,提交者 manast 回答了 Zikoel 的问题“当从Queue.process
返回的 promise 得到解决时,我不清楚”“理论上当队列已关闭。” 因为process
启动队列, 正如 dprentis 所指出的,promise 代表队列本身的状态。 这个问题从上周开始就有积极的团队参与,所以它可能与维护者当前的理解或意图是准确的。
为方便起见,这里有一个指向Queue.process 文档的链接。 你是对的,它没有证明或确认调用process
的返回Promise
,尽管非常小心地规定了要传入的processor
function 的 Promise 返回要求。
粗略地看一下代码 ( Queue.run ),似乎当队列的关闭解决了作为对process
的单个调用的一部分创建的承诺(由concurrency
设置的数字,默认为1
)时, process
具体解决了。 但是,测试似乎主要忽略返回的 Promise 或使用它来链接catch
以发出测试完成信号; 使用返回的 promise 的少数示例似乎被抑制或以其他方式例外。 因为该行为似乎没有正式记录和测试,所以您可能不想过分依赖它。
尽管忽略返回的 Promise(如在文档和测试中)或await
其中任何一个以被动检测队列关闭似乎不是问题,但您也可以通过将所有返回的 Promise 收集到一个Promise.all
调用和链接catch
以记录任何错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.