【问题标题】:Fetch data from an API in regular interval in NodeJS在 NodeJS 中定期从 API 获取数据
【发布时间】:2021-04-29 03:10:36
【问题描述】:

我想定期从 API 获取数据。我编写了一个成功获取数据的脚本,但是如何无限次重复此步骤,以便我可以定期获取数据。

我想以1秒的间隔取数据,怎么办?

const fetch = require('node-fetch')
const time = new Date()

function saveData(metrics) {
  console.log(time.getSeconds())
  console.log(metrics)
  console.log(time.getSeconds())
}

const getData = () => {
  fetch('http://example.com/api/v1')
    .then(response => response.json())
    .then(saveData)
    .catch(err => console.error(err))
}

getData()

【问题讨论】:

  • 这能回答你的问题吗? Run JavaScript function at regular time interval
  • 只是一个旁注:也许我误解了你的目标,但在我看来,如果必须执行,在 saveData() 函数之外声明 const time = new Date() 并没有多大意义定期。

标签: javascript node.js node-fetch


【解决方案1】:

就这样用吧

const interval = setInterval(() => {
  getData();
}, 1000);

如果您想避免像上面那样进行包装回调,您可以将 getData 作为回调传递,setInterval 将在每个指定的间隔时间后调用,即此处为 1 秒

const interval = setInterval(getData, 1000);

【讨论】:

  • 似乎是解决这个问题的好方法。更短的解决方案可能是const interval = setInterval(getData, 1000),但我认为您不会从使用此代码的更短版本中获得任何好处。我只是想提一下。
  • @Nope,你是对的,我们可以将 getData 作为回调传递给 setInterval,它会在每个指定的时间间隔后调用它。我刚刚用我自己的回调包装了 getData,想让它对 OP 更具可读性
  • @Nope,也添加了您的建议
  • 两个解决方案都是异步的(因为回调)?所以我可以在同一个文件中设置几个这样的函数,以不同的时间间隔关闭?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2021-10-15
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多