我使用远程 api 来构建自己的 nodejs api。 我希望客户使用我的 Node API 而不是远程 API,以防止远程 API 上的负载过重。
远程 api 的板球得分每 30 秒更新一次,因此,我想在 30 秒内刷新远程 api,并更新我自己的 Node api 上的数据,而无需点击。
所以我在远程api上使用了setInterval()函数。我在下面提到了一段代码。
const express = require("express");
const app = express();
const request = require("request");
const url = "http://cricscore-api.appspot.com/csa";
app.get("/getTeam/:id", (req, res) => {
res.setHeader("content-type", "text/json");
setInterval(function() {
const id = req.params.id;
const purl = url + "?id=" + id;
request(purl, function(error, response, body) {
console.log("error:", error);
console.log("statusCode:", response && response.statusCode);
console.log(body);
res.end(body);
console.log(res);
});
}, 30000);
});
来自远程 API 的更新数据只需单击一下即可正确反射(reflect)在控制台上。但是当我检查浏览器时它没有更新。
请帮助解决该问题。
最佳答案
我不确定,但似乎当您的请求完成时,分配给路由处理程序回调函数的所有内存都会被销毁,导致 setInterval 被删除。
最好的方法是编写一个 cron 作业或计划任务,它将在特定时间间隔或服务器的特定时间(无论您喜欢哪一个)后访问您自己的 api url 之一
关于javascript - setInterval() 函数在控制台上运行,但在一次 api 命中后,数据在浏览器上没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49980791/