Rxjs 按顺序执行两个观察,并等待两者完成
我只想在第一个和第二个打印完成后再打印Rxjs 按顺序执行两个观察,并等待两者完成,rxjs,Rxjs,我只想在第一个和第二个打印完成后再打印 const obs1 = new Observable<any>((observer) => { setTimeout(() => { console.log('first'); observer.next(); observer.complete(); }, 10000); }); const obs2 = new Observable<any>((observer) => {
const obs1 = new Observable<any>((observer) => {
setTimeout(() => {
console.log('first');
observer.next();
observer.complete();
}, 10000);
});
const obs2 = new Observable<any>((observer) => {
setTimeout(() => {
console.log('second');
observer.next();
observer.complete();
}, 1000);
});
from([obs1, obs2]).pipe(concatAll()).subscribe(() => {
console.log('done');
});
<>你没有完成两个源观测值,所以没有操作员知道你所做的事情。这意味着您可以使用merge或CombineTest,只处理下一个通知 但是,如果您知道它们总是只发出一次,则可以完成每个源,然后使用forkJoin或concat:
这里不维持秩序。首先显示第二个。更新问题,然后使用concat,但您只需在观察者中处理完整的通知。否则,您可以使用toArray收集来自两个源观测值的所有排放。
const obs1 = new Observable<any>((observer) => {
setTimeout(() => {
console.log('first');
observer.next();
observer.complete();
}, 10000);
});
...
concat(obs1, obs2).subscribe({
complete: () => {
console.log('done');
}
});