Получать данные из API через регулярные промежутки времени в NodeJS

Я хочу регулярно получать данные из 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()

person Harsh    schedule 25.01.2021    source источник
comment
Отвечает ли это на ваш вопрос? Запускать функцию JavaScript через регулярные промежутки времени   -  person Jorge Fuentes González    schedule 25.01.2021
comment
Просто примечание: возможно, я неправильно понял вашу цель, но мне кажется, что нет особого смысла объявлять const time = new Date() вне функции saveData(), если она должна выполняться через равные промежутки времени.   -  person secan    schedule 25.01.2021


Ответы (1)


Просто используйте это так

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

Если вы хотите избежать обратного вызова оболочки, как указано выше, вы можете просто передать getData в качестве обратного вызова, который setInterval будет вызывать после каждого указанного интервала времени, т.е. 1 секунда здесь

const interval = setInterval(getData, 1000);
person mss    schedule 25.01.2021
comment
Кажется, это хорошее решение этой проблемы. Более коротким решением может быть const interval = setInterval(getData, 1000), но я не думаю, что вы получите какую-либо выгоду от использования более короткой версии этого кода. Я просто хотел упомянуть об этом. - person Nope; 25.01.2021
comment
@ Нет, вы правы, мы можем просто передать getData как обратный вызов setInterval, который будет вызываться после каждого указанного интервала. Я только что обернул getData своим собственным обратным вызовом, хотел сделать его более читаемым для OP. - person mss; 25.01.2021
comment
@Нет, добавил и твое предложение - person mss; 25.01.2021
comment
Рад видеть это, ура! :) - person Nope; 25.01.2021