Node.js nodejs:http请求作为可写流传递时的错误处理

Node.js nodejs:http请求作为可写流传递时的错误处理,node.js,stream,Node.js,Stream,我正在尝试编写一个函数,它可以流式处理文件或http put请求。我希望能够写一些东西,比如: stream_data_to(dest, cb) stream_data_to(dest, cb) { my_source.pipe(dest); dest.on('finish', cb); dest.on('error', function(err) { cb(err); } } 其中,成功保存数据或发生错误时调用cb(err) 我假设这样做的方法是将dest作为一个可

我正在尝试编写一个函数,它可以流式处理文件或http put请求。我希望能够写一些东西,比如:

stream_data_to(dest, cb)
stream_data_to(dest, cb) {
    my_source.pipe(dest);
    dest.on('finish', cb);
    dest.on('error', function(err) { cb(err); }
}
其中,成功保存数据或发生错误时调用cb(err)

我假设这样做的方法是将dest作为一个可写流,并执行如下操作:

stream_data_to(dest, cb)
stream_data_to(dest, cb) {
    my_source.pipe(dest);
    dest.on('finish', cb);
    dest.on('error', function(err) { cb(err); }
}
这对于文件来说似乎很好,但对于http请求,我认为在数据传输到远程服务器时,但在服务器发送响应之前,调用“finished”。我希望stream_data_在远程服务器确认put成功之前不要回拨


有没有一种方法可以做到这一点,同时保持流数据不知道它是什么样的目的地?这似乎是在node中应该很容易做到的事情,所以我觉得我遗漏了一些明显的东西…

您的解决方案非常完美,它完美地告诉您发送请求的时间。然而,HTTP不是一个流,它是两个流,一个请求流,然后是一个响应流(您可以像请求模块一样,假设它是一个双工流)。也就是说,您应该能够编写一个函数来实现您想要的功能,它只需要支持http。想法:使用instanceOf检查dest的类型:“http.request()返回http.ClientRequest类的实例”