此代码的最后一行成功调用了节点中自定义双工流的_read方法。
const timeContext = new TimeContext(sampleRate);
const input = new InputStream(timeContext); // Stream.Readable
const throttle = new Throttle(sampleRate); // Stream.Transform
const stackSource = [];
const stack = new StackStream(stackSource); // Stream.Duplex
input.pipe(throttle).pipe(stack);
stack.read(); // This will call the _read method of StackStream
添加setTimeout以延迟stream.read()调用,不会调用setTimeout的回调:
const timeContext = new TimeContext(sampleRate);
const input = new InputStream(timeContext); // Stream.Readable
const throttle = new Throttle(sampleRate); // Stream.Transform
const stackSource = [];
const stack = new StackStream(stackSource); // Stack.Duplex
input.pipe(throttle).pipe(stack);
setTimeout(() => {
stack.read(); // This callback never gets called
}, 1000);
答案 0 :(得分:0)
它肯定会被调用,但是还有其他错误
option
它只是表现不正常,因为正在发生其他一些错误。在控制台中查看会引发什么错误。
答案 1 :(得分:0)
看起来,read()函数是堆栈对象的本地属性,而setTimeout无法看到堆栈对象的此本地属性。这就是为什么它以这种方式表现。
请参阅此解决方案以供参考,