【问题标题】:Can't get a node stream's finish event to fire无法触发节点流的完成事件
【发布时间】:2014-04-11 01:10:26
【问题描述】:

我正在尝试确定节点 WriteStream 何时完成写入:

var gfs = GFS(db);

var writeStream = gfs.createWriteStream(
{
    filename: "thismyfile.txt",
    root: "myfiles"
});

writeStream.on("finish", function()
{
    console.log("finished");
    response.send({ Success: true });
});

writeStream.write("this might work");
writeStream.end();

console.log("end");

在我的控制台中,我看到“结束”,但从未“完成”,也没有任何响应。但是,流正在正确写入,并且似乎正在完成(我在数据库中看到已完成的文件)。那甚至没有开火。我尝试将“这可能有效”移动到对 end() 的调用中并删除 write(),我也尝试将字符串传递给 end()。该字符串被写入流,但仍然没有回调。

为什么这个事件不会被触发?

谢谢。

【问题讨论】:

  • 您使用的是什么版本的 Node,GFS 是什么?
  • 感谢您的回复。我弄清楚了这个问题。 GFS 是 gridfs-stream,它实际上没有“完成”事件。只是一个“关闭”事件。

标签: node.js stream


【解决方案1】:

gridfs-stream 模块主要是为节点0.8.x 及以下节点设计和编写的,不使用节点> = 0.10.xrequire('stream').WritableStream 提供的stream2 样式的方法。因此,它没有得到标准化的finish 事件。由模块实现本身发出@​​987654327@,它显然没有。

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 2012-09-24
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多