Javascript 当操作员不再重新订阅流时,为什么要重新订阅?
听着,我在StackBlitz上创造了这个问题 我不知道如何正确使用Javascript 当操作员不再重新订阅流时,为什么要重新订阅?,javascript,rxjs,Javascript,Rxjs,听着,我在StackBlitz上创造了这个问题 我不知道如何正确使用retryWhen操作符。 我希望它从(getPromise())重新订阅我的承诺,并循环它,直到它发出所需的值。我肯定需要使用retryWhen操作符,因为我可以设置延迟逻辑 此时,如果promise第一次生成错误的号码,它就会卡在retryWhen操作符中(参见StackBlitz上的示例) 这似乎是相关的,因为我使用承诺而不是可观察的输入,但我怀疑这是真的。 所以,Rxjs社区,我指望你的笔记。谢谢大家! 问题在于源(承诺
retryWhen
操作符。
我希望它从(getPromise())重新订阅我的承诺,并循环它,直到它发出所需的值。我肯定需要使用retryWhen
操作符,因为我可以设置延迟逻辑
此时,如果promise第一次生成错误的号码,它就会卡在retryWhen
操作符中(参见StackBlitz上的示例)
这似乎是相关的,因为我使用承诺而不是可观察的输入,但我怀疑这是真的。
所以,Rxjs社区,我指望你的笔记。谢谢大家! 问题在于源(承诺对象)只创建了一次,而不是每次抛出错误时都创建它。所以我使用空源作为初始源:
const source = empty()
.pipe(
defaultIfEmpty(undefined)
)
然后我可以使用switchMap
操作符切换到newpromise对象:
const source = empty()
.pipe(
defaultIfEmpty(undefined),
switchMap(v => getPromise())
)
因此,下一次再订购将获得新的承诺。
这是正确的闪电战
现在它就像我期望的那样工作-它一直持续到得到正确的数字。延迟(()=>getPromise())
是一条路,我想: