gpt4 book ai didi

javascript - 为什么 retryWhen 算子不重新订阅流呢?

转载 作者:行者123 更新时间:2023-11-30 06:16:12 26 4
gpt4 key购买 nike

看,我在 StackBlitz 上创建了问题 https://stackblitz.com/edit/rxjs-nndpag

我不知道如何正确使用 retryWhen 运算符。我希望它重新订阅我的 promise from(getPromise()) 并循环它直到它发出所需的值。我绝对需要使用 retryWhen 运算符,因为我可以设置延迟逻辑。

此时,如果 promise 第一次生成错误的数字,它会卡在 retryWhen 运算符中(参见 StackBlitz 上的示例)。

这似乎是相关的,因为我使用的是 promise 而不是可观察到的输入,但我对此表示怀疑。所以,Rxjs 社区,我依赖你的笔记。谢谢!

最佳答案

问题是源(promise 对象)只创建了一次,而不是每次都创建它作为错误抛出。所以我必须使用空源作为初始源:

const source = empty()
.pipe(
defaultIfEmpty(undefined)
)

然后我可以使用 switchMap 运算符切换到 new promise 对象:

const source = empty()
.pipe(
defaultIfEmpty(undefined),
switchMap(v => getPromise())
)

因此下一次重新订阅将获得新的 promise 。这是正确的 StackBlitz https://stackblitz.com/edit/rxjs-yrxace现在它像我预期的那样工作 - 它会一直持续到它得到正确的数字。

关于javascript - 为什么 retryWhen 算子不重新订阅流呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56000145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com