gpt4 book ai didi

ecmascript-6 - Rxjs:每 X 秒重复一次 Ajax 调用,但等待最后一个调用完成

转载 作者:行者123 更新时间:2023-12-03 23:40:13 24 4
gpt4 key购买 nike

我想在订阅自动刷新 Observable 时每 x 秒查询一次 API,确保在发送另一个请求之前已完成最后一个请求。

let autoRefresher = new Observable().exhaustMap(() => Observable.defer(() => {
return someService.returningAPromise();
}).timeout(refreshIntervalInMs).repeat());

有一个更好的方法吗?如何更新刷新间隔而不每次都创建新的可观察对象?

最佳答案

我会这样做:

import {Observable} from 'rxjs';

function doRequest() {
if (Math.random() < 0.25) {
return Observable.of('HTTP Response').delay(3000);
} else {
return Observable.of('HTTP Response');
}
}

let autoRefresher = Observable.timer(0, 1000)
.exhaustMap(doRequest)
.subscribe(response => {
console.log(response);
});

看现场演示: http://plnkr.co/edit/7HAib10r6Vdl1x2U2wFS

这会随机延迟 3 秒。接线员 timer()定期发出一个值。然后 exhaustMap()订阅前一个 Observable 并忽略所有发出的 Observable,直到当前的 Observable 完成。所以 timer()正在发出值,但这些值被 exhaust() 忽略.

顺便说一句,请注意我使用的是 TypeScript。

关于ecmascript-6 - Rxjs:每 X 秒重复一次 Ajax 调用,但等待最后一个调用完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076953/

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