gpt4 book ai didi

javascript - Rx.Js : understanding expand operator

转载 作者:行者123 更新时间:2023-12-04 08:27:52 25 4
gpt4 key购买 nike

我将数据发布到后端,处理数据需要一些时间,并且在我的特定情况下长时间轮询不是解决方案,所以我每 5 秒发送一次请求 expand运算符(operator)

this.apiService.postData(data).pipe(
expand((status) =>
status.comptete? this.apiService.askStatus(status.request_id).pipe(delay(5000)) : empty()
),
map((result) => {
// processing result here
})
);
问题是如何使延迟成为动态的(例如,第一次我想在 1 秒内询问状态,第二次在 2 秒内询问状态,依此类推)?还有两个问题。我是否正确理解,如果我添加 take(N)将限制 askStatus 的运算符调用 N ?我是否正确理解我不需要在这里取消订阅?

最佳答案

expand()每次调用项目函数时也会传递索引,因此您可以基于此计算延迟:

expand((status, index) => 
status.comptete ? this.apiService.askStatus(...).pipe(delay(...)) : empty()
使用 take(N)expand()不会有帮助,因为 expand()对来自源和内部 Observable 的每次发射调用项目函数。但是你当然可以使用 take(N)之后 expand() .
您不必取消订阅 askStatus()如果您稍后在您还订阅的地方处理取消订阅,则手动。

关于javascript - Rx.Js : understanding expand operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65179511/

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