我有这个事件监听器:
manager.on('newOffer', (offer) => {
console.log(`We have a new offer :#${offer.id}`.bgGreen);
getInventory( function(){
processTradeOffer(offer);});});
我的问题出现在很多新人的反对者身上。出现。他们无法正确处理,因为该程序正在解雇新的'首先没有流程。
我需要什么(在我看来):当一个' newOffer'出现,关闭事件监听器,完成功能,然后再次打开。那可能吗?
答案 0 :(得分:0)
听起来你需要一个并发为1的队列,async.queue()
可以提供的队列:
const handler = (offer, done) => {
console.log(`We have a new offer :#${offer.id}`.bgGreen);
getInventory(() => {
processTradeOffer(offer); // NB: if this is async, pass a callback that calls `done`
done();
});
};
const queue = require('async').queue(handler, 1);
...
// Add a new offer to the queue:
let offer = new Offer(); // or however you create `offer` objects
queue.push(offer);
(但是,如果您无法足够快地处理优惠, 会成为瓶颈,在这种情况下,您可能需要重新考虑如何处理优惠)