NodeJS的stdout刷新?

Ton*_*shi 30 node.js

对于nodejs有没有像python或其他语言一样的stdout flush?

sys.stdout.write('some data')

sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

现在我只看到process.stdout.write()了nodejs.

jra*_*jav 15

process.stdout是一个WritableStream对象,该方法WritableStream.write()自动刷新流(除非它被明确地塞住).但是,如果刷新成功,它将返回true,如果内核缓冲区已满并且它还无法写入,则返回false.如果你需要连续多次写,你应该处理这个drain事件.

请参阅文档write.


jvi*_*tti 8

在较新的NodeJS版本中,您可以传递一个回调函数.write(),一旦刷新数据就会调用它:

sys.stdout.write('some data', () => {
  console.log('The data has been flushed');
});
Run Code Online (Sandbox Code Playgroud)

这与检查.write()结果和注册drain事件完全相同:

var write = sys.stdout.write('some data');
if (!write) {
  sys.stdout.once('drain', () => {
    console.log('The data has been flushed');
  });
}
Run Code Online (Sandbox Code Playgroud)