使用 node.js 的 setInterval 抛出的类型错误

Dan*_*el 2 javascript callback setinterval node.js

我是 NodeJS 的新手,我有一个微服务正在运行,我想在没有浏览器的情况下打开一个网页,每 20 秒发出一次客户端 api 请求。我正在尝试使用包 openurl

const openPage = require("openurl");

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

setInterval(openUpPage("myURl"), 20000);
Run Code Online (Sandbox Code Playgroud)

但是,在调用setInterval(...).

知道我如何使用 setInterval 完成此操作吗?

Bee*_*Bee 6

您需要将回调传递给 ,setInterval而不是立即使用匿名箭头函数作为示例调用您的函数。

setInterval(() => openUpPage("myURl"), 20000);
Run Code Online (Sandbox Code Playgroud)

箭头函数不是必须的。

setInterval(function() { openUpPage("myURl") }, 20000);
Run Code Online (Sandbox Code Playgroud)

测试时我发现"TypeError: "callback" argument must be a function"抛出的错误setInverval与 node.js 有关。问题中的代码片段在 codepen 中运行时没有任何错误(使用 Chrome)。

这是因为纯javascript由于缺乏底层支持,无法实现这种定时器相关的功能。因此浏览器和 node.js 不一定共享与文档中看到的相同的实现。

尽管如问题片段中所见,立即调用该函数与setInterval任何实现结合起来都是毫无意义的。