在我的angular 8应用程序中,我正在订阅一个可观察对象,对于一组以数组形式完成的给定输入可观察对象,该观察对象应与另一个可观察对象合并。
代码如下:
const obs1 = Observable.of([1,2,3]);
const obs2 = Observable.of([4,5,6]);
const obs3 = Observable.of([7,8,9]);
const obs = [obs1, obs2, obs3]; // obs1-3 are three observables
from(obs).pipe(
mergeAll(),
mergeMap(res => res.map(val => functionReturningAnObservable(val))),
mergeAll(),
finalize(() => someSideAction())
).subscribe();
代码工作正常。但是,由于调用堆栈大小过多,我的finalize调用崩溃了(副作用不是特别轻巧)。当我增加输入可观察值的数量或数组中值的数量时,就会发生这种情况。 在堆栈跟踪中,我看到大约有180次与上述可观察到的调用有关。如何在Observables调用堆栈之外运行finalize调用?
答案 0 :(得分:0)
如果要在subscribe方法中调用函数,可以尝试
...subscribe({
next: (data) => {/*data retrieval*/},
error: (err) => {/*error callback*/},
complete: ()=> {someSideAction()}})
这将在next
回调完成后执行。
请参阅this article