2015-08-12 2 views
2

Например, у меня есть это:Как проверить завершение цепи трубопровода в node.js?

var r = fs.createReadStream('file.txt'); 
var z = zlib.createGzip(); 
var w = fs.createWriteStream('file.txt.gz'); 
r.pipe(z).pipe(w); 

Я хочу сделать что-то после r.pipe (г) .pipe (ш) заканчивается. Я пробовал что-то вроде этого:

var r = A.pipe(B); 
r.on('end', function() { ... }); 

но он не работает для цепи труб. Как я могу заставить его работать?

ответ

3

Вы ищете событие finish. Из docs:

Когда метод конечной() был вызван, и все данные были записаны на базовую систему, это событие испускается.

Когда поток источник испускает end, он вызывает end() по назначению, что в вашем случае является B. Так вы можете сделать:

var r = A.pipe(B); 
r.on('finish', function() { ... }); 
+0

Возможно, вы не понимаете мою точку зрения. Я сосредотачиваюсь на «цепочке». что вы сказали, работает с A и B, но как насчет C, если у меня есть A.pipe (B) .pipe (C)? –

+0

О, извините. Вы правы :) Большое спасибо. –

Смежные вопросы