我无法理解RxJS 中的Finalize运算符。让我用一个例子来演示这一点:
of(null).pipe(
tap({ complete: () => console.log('tap 1 completes') }),
finalize(() => console.log('finalize')),
tap({ complete: () => console.log('tap 2 completes') })
).subscribe({ complete: () => console.log('subscribe completes') });
Run Code Online (Sandbox Code Playgroud)
我希望finalize回调在第二个之前执行tap。但这并没有发生。相反,上面的代码会产生以下输出:
tap 1 completes
tap 2 completes
subscribe completes
finalize
Run Code Online (Sandbox Code Playgroud)
看看实现,我相信操作符通过整个可观察链传递(提升),以便始终在其末端应用。所以现在我有两个问题:
tap)而不是在可观察链的末尾?rxjs ×1