为什么" process.stdin.read"当有一个`可读'处理程序时读火?

时间:2018-03-23 06:10:39

标签: node.js stream

当我发出stdin readable事件时,如果我将process.stdin.read覆盖到模拟中,我会看到以下内容。

process.stdin.on('readable', () => {
  console.log('readable emitted')
  process.stdin.read()
})
process.stdin.read = (...args) => console.log({msg: 'read fired', args})
process.stdin.emit('readable')

日志:

readable emitted
{ msg: 'read fired', args: [] }
{ msg: 'read fired', args: [ 0 ] }

我试图让这个模拟工作,但是,如果有额外的电话或我没有正确回应这个初始电话,它就不会工作。

const mockStdinRead = (message) => {
  const gen = function * () {
    yield message
  }
  const it = gen()
  const callerFn = (bool) => {
    console.log({bool})
    if (bool === 0) return null
    const called = it.next().value
    console.log({called})
    return called || null
  }
  return callerFn
}

第二次电话有什么责任?

0 个答案:

没有答案