How to close a readable stream (before end)?

前端 未结 9 1430
名媛妹妹
名媛妹妹 2020-11-29 03:16

How to close a readable stream in Node.js?

var input = fs.createReadStream(\'lines.txt\');

input.on(\'data\', function(data) {
   // after closing the strea         


        
9条回答
  •  鱼传尺愫
    2020-11-29 03:42

    Invoke input.close(). It's not in the docs, but

    https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/fs.js#L1597-L1620

    clearly does the job :) It actually does something similar to your isEnded.

    EDIT 2015-Apr-19 Based on comments below, and to clarify and update:

    • This suggestion is a hack, and is not documented.
    • Though for looking at the current lib/fs.js it still works >1.5yrs later.
    • I agree with the comment below about calling destroy() being preferable.
    • As correctly stated below this works for fs ReadStreams's, not on a generic Readable

    As for a generic solution: it doesn't appear as if there is one, at least from my understanding of the documentation and from a quick look at _stream_readable.js.

    My proposal would be put your readable stream in paused mode, at least preventing further processing in your upstream data source. Don't forget to unpipe() and remove all data event listeners so that pause() actually pauses, as mentioned in the docs

提交回复
热议问题