【发布时间】:2020-05-19 14:59:55
【问题描述】:
我想在用户与页面交互时构建一个可观察对象列表。每个 observable 都是单独订阅的,但我希望在进行单个或多个并发 API 调用后调用另一个函数。
我让每个函数都将一个 observable 推送到一个数组,并且我在我的 ngOnInit 中有一个 forkJoin 和对数组的订阅,但这只会触发一次。如何进行实时订阅,在所有当前 API 调用返回后执行回调函数,并在用户继续进行 API 调用时继续这样做?
例如,用户单击“创建事物”,然后什么也不做。
forkJoin(thingsInProgress).subscribe(() => doStuffWhenAllResolve())
...
createThing() {
const = this.thingService.createThing().pipe(tap(() => doStuff()));
thingsInProgress.push(createThing$);
createThing$.subscribe();
}
deleteThing() {
...
}
updateThing() {
...
}
我想让doStuff() 开火,然后doStuffWhenAllResolve() 开火。或者,如果用户在几毫秒内依次单击“创建事物”、“删除事物”、“更新事物”,则 doStuff()(例如)被调用一次,doStuffWhenAllResolve() 被调用一次。
然后,如果用户真的很快又创建了 10 个东西,那么在所有重叠的 API 调用返回后,doStuffWhenAllResolve() 会再次被调用。
我在这里寻找什么 RXJS 运算符?
【问题讨论】:
标签: angular typescript rxjs