【发布时间】:2020-01-27 13:23:16
【问题描述】:
我想问一下,如何每 60 秒运行一个函数,其中有另一个计时器,它每 5 分钟运行一次
function systemTime() {
let currentTime = new Date();
let diem = "AM";
let h = currentTime.getHours();
let m = currentTime.getMinutes();
let s = currentTime.getSeconds();
if (h == 0) h = 12;
if (h > 12) diem = "PM";
if (h < 10) h = "0" + h;
if (m < 10) m = "0" + m;
if (s < 10) s = "0" + s;
return {
h: h.toString(),
m: m.toString(),
diem: diem
}
}
async function serverTime() {
let timeUrl = 'https://worldtimeapi.org/api/timezone/Europe';
let response = await fetch(timeUrl);
let data = await response.json();
let timestamp = data.datetime;
let time = timestamp.split('T')[1].split('.')[0];
let timeArray = time.split(':');
if(parseInt(timeArray[0]) > 12) timeArray[2] = 'PM'
else timeArray[2] = 'AM';
return {
h: timeArray[0],
m: timeArray[1],
diem: timeArray[2]
}
}
async function clock() {
let h, m, diem;
let container = document.querySelector('#displayClock');
container.innerHTML = `${h} : ${m}`;
setInterval(() => clock(), 60000);
// I would like to grab the server time every 5 min for comparison
setInterval(() => {}, 60000*5) // set minutes and hours to the server time
}
我想每 60 秒调用一次 clock() 函数以在页面上显示时间,但同时我想每 5 分钟调用一次 serverTime() 函数来比较值并获取 serverTime 如果它们不一样。
每 60 秒调用一次 clock() 不是问题。 setInterval 会解决这个问题,但如果我在其中设置了 5 分钟的间隔,那么每 10 秒就会设置一个新的 5 分钟间隔?
非常感谢您的帮助。
【问题讨论】:
-
你在哪里使用
setInterval?如果可以每 60 秒(60000 毫秒)设置一个间隔,为什么不能每 5 分钟(300000 毫秒)设置一个? -
@David 我已将设置的间隔添加到代码中。但如果时钟每 1 分钟运行一次,它不会每 1 分钟设置一个新的 5 分钟间隔吗?
标签: javascript timer setinterval