Ваш код дает мне просто "1
" (с RxJS 6);Вы уверены, что видите 3 значения?
Rx.from([1,2,3]).pipe(
op.concatMap(number => Rx.Observable.create(observer => {
observer.next(number);
}))
).forEach(x => console.log(x)).then(() => console.log('done'))
Вы никогда не завершаете созданное Observable (оно выдает одно значение, но никогда не вызывает observer.complete()
).Это работает:
Rx.from([1,2,3]).pipe(
op.concatMap(number => Rx.Observable.create(observer => {
observer.next(number); observer.complete();
}))
).forEach(x => console.log(x)).then(() => console.log('done'))
Все это показывает, как трудно правильно использовать Rx.Observable.create()
.Смысл использования Rx заключается в написании вашего кода с использованием высокоуровневых абстракций.Большая часть этого предпочитает использовать операторы вместо наблюдателей.Например, в вашем случае (что, по общему признанию, просто):
Rx.from([1,2,3])
.pipe(op.concatMap(number => Rx.of(number)))
.forEach(x => console.log(x)).then(() => console.log('done'))