gpt4 book ai didi

javascript - 使用 observable 在 1 分钟后重复请求

转载 作者:行者123 更新时间:2023-11-29 18:58:06 25 4
gpt4 key购买 nike

我想每 1 分钟从 5 个 API 加载数据以刷新页面。为了发送请求并收集所有数据,我将使用 Observable.forkJoin 并在每次将其放入 setInterval 时重复它。

类似下面的内容。

setInterval(function () {
console.log("INSIDE SET INTERVAL")
return Observable.forkJoin(
self.http.get(url1, { headers: headers, method: 'GET' }).map((res: Response) => res.json()),
self.http.get(url2, { headers: headers, method: 'GET' }).map((res: Response) => res.json()),
self.http.get(url3, { headers: headers, method: 'GET' }).map((res: Response) => res.json()),
self.http.get(url4, { headers: headers, method: 'GET' }).map((res: Response) => res.json()),
self.http.get(url5, { headers: headers, method: 'GET' }).map((res: Response) => res.json()),
);
}, 60000);

但是当我尝试订阅这个功能时它说

Property 'subscribe' does not exists on type 'void'.

我已经使用 Observable.timer(60000) 实现了相同的功能,但是每个请求都驻留在不同的文件中并且变得难以跟踪。

有没有更好的实现方式?请指导。

谢谢

最佳答案

有更好的方法可以做到这一点,

您应该使用 Observable.interval 而不是 setInterval

let url = 'https://jsonplaceholder.typicode.com/users/';

let response = Observable.interval(60000).switchMap(() =>
Observable.forkJoin(
this.http.get(`${url}1`).map((res: Response) => res.json()),
this.http.get(`${url}2`).map((res: Response) => res.json())
)
);

response.subscribe(([data1, data2]) => {
// your code
});

WORKING DEMO (可以查看控制台日志)

而且我认为,您不能像在代码中使用的那样直接从 setInterval 返回值 more read

关于javascript - 使用 observable 在 1 分钟后重复请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48201268/

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