environment:
Я пишу функцию "getStatus $", чтобы смоделировать асинхронное обещание, и превратил его внаблюдаемый.
Когда я подписываюсь, он работает нормально.
Но я помещаю его в трубу, он не работает.
В чем проблема?
Как это исправить?
Спасибо ~
const { from, interval } = rxjs
const { switchMap } = rxjs.operators
const getStatus$ = () => from(new Promise(res => {
setTimeout(() => {
res('zdl')
}, 1000);
}));
// 1s
// 'first zdl'
// It works
getStatus$().subscribe(str => console.log('first', str));
// It doesn't work
// nothing output
interval(1000).pipe(
switchMap(getStatus$)
).subscribe(str => console.log('second', str));
<script src="https://cdn.bootcss.com/rxjs/6.2.0/rxjs.umd.min.js"></script>
Благодаря Fan Cheung , двумя способами:
interval(1000).pipe(
mergeMap(getStatus$)
).subscribe(str => console.log('second', str));
// or
const getStatus$ = () => from(new Promise(res => {
setTimeout(() => {
res('zdl')
}, 500);
}));