使用 exhaustMap 操作符来避免嵌套 Observables。
exhausMap 的操作方式为,当第一个 Observable 正在发出值时,它会阻止任何来自第二个 Observable 的发出。一旦第一个 Observable 完成,它才会订阅下一个 Observable。
示例代码:
import { fromEvent } from 'rxjs';
import { exhaustMap } from 'rxjs/operators';
const saveData = (data: any) => {
// call API to save data
}
const source = fromEvent(document, 'click');
const example = source.pipe(
exhaustMap(() => {
return saveData("some data")
})
);
example.subscribe(val => console.log(val));
在上面的示例代码中,我们使用 exhaustMap 操作符来在用户单击文档时保存数据。它避免了嵌套的操作符并且总是只订阅最新的 Observable。