从订阅接收到值后如何使用 rxjs 运行延迟逻辑?

问题描述 投票:0回答:2

我想在订阅后运行我的部分逻辑,并有额外的延迟(使用 RxJS)。我知道 Finalize 运算符,我可以将其与管道一起使用,但这会导致我的可观察对象完成后立即执行。

有没有办法在运行 Finalize 之前创建延迟?

附加信息:

我正在订阅服务器调用,这意味着我只期望一个值。

javascript typescript rxjs delay rxjs6
2个回答
0
投票

不,无法在

finalize
之前创建延迟。

您可以在

timer
订阅
finalize

这不是反模式,而是安全操作。

finalize
仅在源可观察量已发出完成后被调用一次

看这个例子:

of([1,2,3])
.pipe(
    finalize(() => {
        timer(1000).subscribe(() => {/* 1s delayed execution */})
    })
)
.subscribe(value => {
    console.log(value);
})

-1
投票

只需在管道内使用延迟运算符即可。

Observable.pipe(deplay(200))...

资源:https://rxjs-dev.firebaseapp.com/api/operators/delay

© www.soinside.com 2019 - 2024. All rights reserved.