随着流在 node.js 中变得越来越流行,我试图深入了解它们。我查看了JSONStream和event-stream等流行模块的代码,并通读了stream-handbook。
还有一件事我不明白。我有时会看到以下模式:
主.js:
var module = require('./module')
module('something').pipe(process.stdout)
模块.js:
var Stream = require('stream')
module.exports = function(string) {
var stream = new Stream()
stream.readable = true
stream.resume = function() {
stream.emit('data', string)
stream.emit('end')
}
process.nextTick(stream.resume)
return stream
}
我认为这真的很令人困惑,因为我会pipe
在module.js
. 在示例中,我必须查找这一行process.nextTick()
,然后找到被调用的函数。作为初学者,您可能不知道是做什么process.nextTick()
的,因此没有机会了解该模块的作用。
这种模式是编写流模块的某种“最佳实践”吗?为什么不在 a 中实现逻辑stream.pipe = function(dest){}
?