RxJS подписка никогда не заканчивается

1

Я новичок в rxjs. Я вызываю функцию ниже, и весь поток считывается, а инструкции чтения консоли печатаются, но я никогда не вижу "Subscibe done", и я не знаю почему. Что потребуется, чтобы закончить этот поток? Что-то явно не так?

const readline$ = RxNode.fromReadLineStream(rl)
    .filter((element, index, observable) => {
        if (index >= range.start && index < range.stop) {
            console.log('kept line is ${JSON.stringify(element)}');
            return true;
        } else {
            console.log('not keeping line ${JSON.stringify(element)}');
            return false;
        }
    })
    .concatMap(line => Rx.Observable.fromPromise(myFunction(line)))
    .do(response => console.log(JSON.stringify(response)));

readline$.subscribe(i => { console.log('Subscribe object: ${util.inspect(i)}'); },
                  err => { console.error('Subscribe error: ${util.inspect(err)}'); },
                 done => { console.log("Subscribe done."); // NEVER CALLED
                           anotherFunc();                  // NEVER CALLED
                     }
);
Теги:
rxjs
filter

1 ответ

1

Из исходного кода вы можете видеть, что оно отправляет полное уведомление только тогда, когда поток источника испускает событие close. https://github.com/Reactive-Extensions/rx-node/blob/master/index.js#L100-L102

Поэтому, если вам нужен правильный полный обработчик для вызова, вам нужно закрыть поток самостоятельно, см. Как закрыть читаемый поток (до конца)? ,
Другими словами, Observable не завершается автоматически после прочтения всего файла.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню