44

Pythonや他の言語と同じように、nodejsのstdoutフラッシュはありますか?

sys.stdout.write('some data')

sys.stdout.flush()

今、私はprocess.stdout.write()nodejsだけを見ました。

4

4 に答える 4

23

process.stdoutWritableStreamオブジェクトであり、メソッドWritableStream.write()はストリームを自動的にフラッシュします (明示的にコーキングされていない限り)。ただし、フラッシュが成功した場合は true を返し、カーネル バッファーがいっぱいでまだ書き込みできない場合は false を返します。連続して数回書き込む必要がある場合は、drainイベントを処理する必要があります。

のドキュメントをwrite参照してください。

于 2012-09-20T10:40:35.413 に答える
10

新しい NodeJS バージョンでは、コールバックを.write()に渡すことができます。これは、データがフラッシュされると呼び出されます。

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

これは、結果を確認してイベント.write()に登録するのとまったく同じです。drain

let write = sys.stdout.write('some data');
if (!write) {
  sys.stdout.once('drain', () => {
    console.log('The data has been flushed');
  });
}
于 2016-09-20T23:33:47.583 に答える
3

writetrueは、データがフラッシュされた場合に戻ります。が返された場合はfalse、「排水」イベントを待つことができます。

flushブロッキング操作になるため、はないと思います。

于 2012-09-20T10:40:16.367 に答える