仅在 NodeJS 更新时从 API 获取数据

Fetch data from an API only on update in NodeJS

我正在从预订 api 中检索数据,其中房间的可用性每次都在变化。我正在做的是使用 setInterval 每 1 秒检索一次数据。

const interval = setInterval(getData, 1000);

效果很好,但我认为如果有一种方法可以只在我正在检索的数据 api 有更新或更改时进行检索,那会更好。我到处都找过了,但我找不到任何关于这个的东西。

对于服务器端,假设我使用 Express 从 https://api.publicapis.org/entries 获取数据并对数据进行一些更改,现在我的数据可从 https://localhost:3001/api/entries 获得,我使用它并显示我想要的内容使用 React.

假设https://api.publicapis.org/entries每次都改变它的数据,当只有数据改变时我如何恢复,以便在https://localhost:3001/api/entries中数据相应地改变。

我认为你可以从 server-side 和 client-side 做一些事情,从 client-side 开始,使用 setTimeout 而不是 setInterval,这可以让你仅在获得最后一个请求时发送下一个请求响应,例如:

let timeout
function getData() {
   // await request here..
   timeout = setTimeout(getData, 1000)
}

然后用上次的更新数据向服务器查询新的数据,这样server-side就可以知道是否有更新数据需要发送给你。如果你想让服务器通知你什么时候应该更新,我想你必须使用套接字。

我建议你使用 React Query (https://react-query.tanstack.com/reference/QueryCache#_top) 中的 QueryCache 机制,这是一个非常强大的功能,因为默认情况下每个查询结果都会缓存五分钟并依赖于该缓存用于后续请求。

React 查询知道服务器数据可能已经更新并且缓存可能不包含最新数据因此触发后台重新获取 相同的查询,如果提取成功,新数据将在 UI 中更新。由于我们的数据与缓存数据相同,因此我们在 UI...

中看不到任何变化

YouTube video tutorial as a reference