首页 > 解决方案 > 如何在 caolan/async queue v3 中暂停流消费

问题描述

我在 caolan v2.6.3 中有一个工作流消费者,它基本上会在队列饱和后立即暂停流消费,并在耗尽后恢复:

let q = async.queue(function(tasks, callback) {
  // ...
  callback()
}, 4);

q.drain = function() {
  some_readable_stream.resume()
}

q.saturated = function() {
  some_readable_stream.pause();
}

some_readable_stream.on("data", function(data) {
  q.push(data);
});

v3 似乎有重大变化更新后,上述逻辑失败并出现错误

Cannot assign to read only property 'saturated' of object '#<Object>'

但我不确定在 v3 中什么是正确的替代品。

任何人有任何提示?

标签: node.jsasynchronousstreamqueueasync.js

解决方案


v2 中的属性q.saturatedq.unsaturated并且q.drain是 v3 中的方法,因此可以这样解决:

// ...

q.drain(function() {
  some_readable_stream.resume()
})

q.saturated(function() {
  some_readable_stream.pause();
})

//... 

推荐阅读