我想做一个小NodeJS应用程序,每X分钟检查一个外部网站。
首先,我只想检查一个网站,但当这工作,然后检查多个。
由于后来我想能够检查多个网站,我想创建一个类是有意义的,这样可以每n
分钟检查一次example1.com
,每j
分钟检查一次网站b
,这样每个网站对象都可以有自己的计数器?
const fetchWebsite = delay => {
console.log('Fetch website after ' + delay + ' seconds');
}
setInterval(() => {
setTimeout(fetchWebsite, 1000, 1);
setTimeout(fetchWebsite, 2000, 2);
}, 1000)
这就给出了
Fetch website after 1 seconds
Fetch website after 2 seconds
Fetch website after 1 seconds
Fetch website after 2 seconds
...
这是每1秒打印一次的地方
Fetch website after 1 seconds
Fetch website after 1 seconds
Fetch website after 2 seconds
Fetch website after 1 seconds
Fetch website after 1 seconds
Fetch website after 2 seconds
...
有人能想出为什么第二个FetchWebsite
每次都要打印,而不仅仅是每2秒打印一次吗?
对于如何对我的尝试进行OOP的任何帮助也将非常感激。
以1秒为间隔设置新的超时。 在您的情况下,这是错误的。
检查此代码(带计时器功能的upd.):
// Fetching function
const fetchWebsite = (delay, param) => console.log(`Fetch website ${param} after ${delay} seconds`);
// Interval creator
const runInterval = (fn, delay, param) => {
setInterval(() => {
// Init and run monitor
if(!monitor[param]) monitor[param] = 1000;
monitor[param] += delay;
// Run function
fn(delay, param);
}, delay)
}
// Simple running monitor
const monitor = {};
// Run interval 1
runInterval(fetchWebsite, 1000, 1);
// Run interval 2 after 3 sec
setTimeout(() => {
runInterval(fetchWebsite, 2000, 2);
}, 3000);
// Check monitor after 10 sec
setTimeout(() => {
console.log(monitor)
}, 10000);
这里有一个例子