繁体   English   中英

一个bull queue的process方法返回的promise可以忽略不计吗?

[英]Is it ok to ignore the promise returned by the process method of a bull queue?

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

bull库中process方法的方法签名

其他小问题,如果这个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM