обработка ошибок потока в канале - остановка предыдущего потока - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь правильно обработать событие ошибки с помощью функции pipe.

Учитывая, что у меня есть два потока A (transform stream.passThrough ()) и B (writeStream) в Promise, код выглядит следующим образом:

new Promise( (resolve, reject) => {
               A.pipe(B).on('error', (err)=>{reject})
                         .on('end', ()=>{resolve})})

Приведенный выше код отклоняет обещание, как и ожидалось. Однако поток A продолжает работать.Может ли кто-нибудь подсказать мне, как остановить поток А?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете УНИЧТОЖИТЬ поток A при возникновении ошибки:

transform.destroy([error]) Уничтожить поток и выдать «error».После этого вызова поток преобразования освободит любые внутренние ресурсы.Реализаторы не должны переопределять этот метод, а вместо этого должны реализовывать readable._destroy ().Реализация по умолчанию _destroy () для Transform также выдает 'close'.

EDIT

new Promise( (resolve, reject) => {
               A.pipe(B).on('error', err => { A.destroy(); reject(err); })
                         .on('end',    e => { resolve(e) })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...