Как я могу избежать использования рекурсивной структуры, когда у меня появилось несколько потоков, и мне нужно получить абсолютное событие end
, чтобы закончить логику.Избегайте обратного вызова ад с несколькими потоками
var someArray = ['file1', 'file2', 'file3'];
someArray.forEach(function(file) {
fs
.createReadStream(file)
.pipe(/* do some stuff */)
.on('data', function(usageInfo) {
// done?
});
}
У меня есть несколько файлов, которые я должен обрабатывать через tp некоторые процессы. Как настроить событие, которое сообщает мне, когда все они сделаны? В настоящее время я получаю каждый end
событие индивидуально.
Я могу абсолютно запустить каждый поток в одно и то же время. Мне просто нужно как-то собрать конец?
Я мог бы вызвать вызов функции для каждого end
события и считать это ... это звучит Hacky хотя? ...
Я чувствую, что есть способ сделать это с обещаниями, но я не знаю, как.
Вы пробовали обещания? – laggingreflex
да, так что я вроде как не упоминал об этом! :) Я хочу использовать обещания, но не могу понять, как с потоками здесь? – Dominik
Две вещи, которые вы должны проверить: 1. Найдите способы использования [обещаний с потоками] (http://google.com/search?q=promises+with+stream+javascript), вы найдете много материала. [этот кажется хорошим] (http://www.bennadel.com/blog/2832-exposing-promise-deferred-functionality-on-streams-in-node-js.htm) и 2. [Продвижение Bluebird] (https : //github.com/petkaantonov/bluebird/blob/master/API.md#option-promisifier), в основном превратить любую асинхронную функцию в обещание упростить процесс – laggingreflex