处理事件。逐一。 Node.js的

时间:2017-07-26 14:21:51

标签: javascript node.js callback synchronous

我有这个事件监听器:

manager.on('newOffer', (offer) => {
console.log(`We have a new offer :#${offer.id}`.bgGreen);
getInventory( function(){
processTradeOffer(offer);});});

我的问题出现在很多新人的反对者身上。出现。他们无法正确处理,因为该程序正在解雇新的'首先没有流程。

我需要什么(在我看来):当一个' newOffer'出现,关闭事件监听器,完成功能,然后再次打开。那可能吗?

1 个答案:

答案 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);

(但是,如果您无法足够快地处理优惠, 会成为瓶颈,在这种情况下,您可能需要重新考虑如何处理优惠)