[英]Handle events. One by one. Node.js
我有此事件偵聽器:
manager.on('newOffer', (offer) => {
console.log(`We have a new offer :#${offer.id}`.bgGreen);
getInventory( function(){
processTradeOffer(offer);});});
當出現許多“ newOffers”時,我的問題就產生了。 無法正確處理它們,因為程序會先觸發“ newOffers”而沒有先進行處理。
我需要什么(我認為):當出現“ newOffer”時,關閉事件偵聽器,完成功能,然后再次打開。 那可能嗎?
聽起來您需要並發性為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);
(但是,如果您不能足夠快地處理報價,這可能會成為瓶頸,在這種情況下,您可能需要重新考慮如何處理報價)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.