javascript - setInterval() 函数在控制台上运行,但在一次 api 命中后,数据在浏览器上没有更新

标签 javascript node.js api express

我使用远程 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/

相关文章:

javascript - Protractor - 按任何属性查找元素

javascript - 根据 React.JS 中的对象数组动态呈现部分/div

javascript - 我需要使用 javascript 将用户从印度重定向到另一个页面

node.js - 丢失的 Mongoose Schema 属性仍在返回中

javascript - 尝试在 Heroku 上托管 VueJS 应用程序。在heroku日志中获取 "npm ERR! missing script: start",在我的页面上获取 "Application error"

json - Slick Slider 未使用 API json 初始化

swift - 如何在 iOS swift 4 中访问 Magento Rest API

c++ - 非成员函数指针作为 API 中成员函数的回调

javascript - jQuery UI 没有方法 'sortable'

javascript - Node.js 中如何解释 'use strict' 语句?