TypeError, брошенный setInterval, используя node.js - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в NodeJS, у меня запущен микросервис, который я хочу открывать веб-страницу без браузера, чтобы каждые 20 секунд отправлять запросы API на стороне клиента. Я пытаюсь использовать пакет openurl

const openPage = require("openurl");

function openUpPage(url){
  openPage.open(url);
}

setInterval(openUpPage("myURl"), 20000);

Однако мне возвращается "TypeError: аргумент" обратного вызова "должен быть функцией" при вызове setInterval(...).

Есть идеи, как мне это сделать с помощью setInterval?

1 Ответ

0 голосов
/ 27 июня 2018

Вам нужно передать обратный вызов на setInterval вместо того, чтобы сразу вызывать вашу функцию, используя в качестве примера анонимную функцию стрелки.

setInterval(() => openUpPage("myURl"), 20000);

Функция стрелки не обязательна.

setInterval(function() { openUpPage("myURl") }, 20000);

При тестировании я обнаружил, что ошибка "TypeError: "callback" argument must be a function", выданная setInverval, связана с node.js. Фрагмент кода из вопроса выполняется без ошибок внутри codepen (с использованием Chrome).

Это вызвано тем, что чистый JavaScript не может реализовать такие функции, связанные с таймером, из-за отсутствия поддержки низкого уровня. Поэтому браузеры и node.js не обязательно используют ту же реализацию, что и в документации.

Несмотря на то, что вызов функции сразу же, как видно из фрагмента вопросов, не имеет смысла в сочетании с setInterval независимо от реализации.

...