我编写了一个函数,该函数在传递可读流之后返回已解决的Promise。有两个管道。第一个管道是转换,第二个管道是可写流。我不想关闭可写流,因此我在writer / pipe参数中传递了{end:false}
。转换和可写流独立工作(即,仅一个管道),但是当我链接它们时却不能。
根据我所看到的所有示例,为了知道该过程何时完成,我添加了readable.on('end')
。无法正常工作。
pipe(readable, transform, writable){
return new Promise((resolve, reject) => {
readable
.pipe(transform)
.pipe(writable, {end:false})
.on('error', (error) => {
console.error(error)
reject(error);
})
readable.on('end', () => {
writable.end();
resolve();
});
});
}
writable.end()
,则不会将任何内容写入文件writable.end()
,实际上它确实可以完成应做的事情,但是它过早地解决了Promise方法。文件仍在写入中。{end:false}
并正常进行操作,则效果很好。问题是我希望可写流保持打开状态。答案 0 :(得分:0)
尝试所有事件后,我需要使用select
device_id,
max(value) filter (where metric_name = 'speed') as max_speed,
avg(value) filter (where metric_name = 'speed') as avg_speed,
count(value) filter (where metric_name = 'tripDuration') as number_of_trips
from metric_history
group by device_id
处理程序来指示编写已完成。
writable.on('unpipe')