【问题标题】:Readable stream does not pause可读流不会暂停
【发布时间】:2021-11-07 00:46:32
【问题描述】:

当我这样说时,我的可读流不会暂停。我在这里错过了什么?

我希望输出每秒暂停一秒钟,但事实并非如此。

const { Readable, Writable } = require('stream');

const r = new Readable({
  read() {
    this.push(Math.random().toString());
  }
});

const w = new Writable({
  write(data, enc, next) {
    console.log(data.toString());
    setTimeout(next, 10)
  }
});

r.pipe(w);

setInterval(() => {
  if(r.isPaused()) {
    console.log('>>>>>>>>>>> RESUMING')
    r.resume();
  } else {
    console.log('>>>>>>>>>>> PAUSING')
    r.pause();
  }
}, 1000);

【问题讨论】:

标签: javascript node.js stream


【解决方案1】:

通过使用管道/取消管道,我能够模仿暂停/恢复行为。

const { Readable, Writable } = require('stream');

const r = new Readable({
  highWaterMark: 1,
  read() {
    const randomNumber = Math.random();
    this.push(randomNumber.toString());
  }
});

const w = new Writable({
  highWaterMark: 1,
  write(randomNumber, enc, next) {
    console.log(randomNumber.toString())
    setTimeout(next, 1000)
  }
});

let isPiped = true;
r.pipe(w);

setInterval(() => {
  if(isPiped) {
    console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>> PAUSE')
    r.unpipe(w);
    isPiped = false
  } else {
    console.log('>>>>>>>>>>>>>>>>>>>>>>>>>>>>> RESUME')
    r.pipe(w);
    isPiped = true;
  }
}, 10000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2020-10-30
    • 2017-01-19
    • 2021-03-28
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多