【发布时间】:2013-11-23 23:04:30
【问题描述】:
请不要讲我应该如何异步执行所有操作。有时我想以简单明了的方式做事,这样我就可以继续其他工作了。
由于某种原因,以下代码不起作用。它与我在recent SO question 上找到的代码相匹配。节点是否改变或破坏了什么?
var fs = require('fs');
var rs = fs.createReadStream('myfilename'); // for example
// but I might also want to read from
// stdio, an HTTP request, etc...
var buffer = rs.read(); // simple for SCCCE example, normally you'd repeat in a loop...
console.log(buffer.toString());
读取后,缓冲区为空。
在调试器中查看rs,我明白了
events
has end and open functions, nothing else
_readableState
buffer = Array[0]
emittedReadable = false
flowing = false <<< this appears to be correct
lots of other false/nulls/undefined
fd = null <<< suspicious???
readable = true
lots of other false/nulls/undefined
【问题讨论】:
-
使用 readFileSync nodejs.org/api/fs.html#fs_fs_readfilesync_filename_options
-
是的,但是,我还希望能够从 Streams 中读取,而不仅仅是文件。我的错,编辑了问题以澄清。
-
@user949300
buffer是null因为还没有可从流中读取的数据。你需要监听readdable事件然后调用rs.read() -
@Bulkan 但调用
readableStream.on('readable', callback)是异步的。我希望避免这种情况。 -
@user949300 流本质上是异步的。无法以同步方式使用它们。
标签: javascript node.js