使用此代码,我得到了一些(对我而言)意外的行为:
setInterval(function() {
console.log('Interval running');
setTimeout(function() {
console.log('TimeOut called');
}, 5000);
}, 2000);
setInterval运行正常(每2秒),但是setTimeout仅在第一次运行(5秒后)运行,然后在2秒后开始运行? :/
我在这里想念什么?
答案 0 :(得分:3)
每2秒,您将超时设置为从该时间点起5秒后发生的事情。
这意味着事件将在
发生这是您看到的行为。
答案 1 :(得分:1)
根据setInterval doesn't acutally run the function after the delay,而不是在延迟之后,它将功能添加到事件堆栈中,以便处理器能够尽快运行它。如果proc忙于其他操作,则实际运行将花费比延迟时间更长的时间。 因此,您会遇到延迟。
setInterval(function() {
console.log('Interval running');
setTimeout(function() {
console.log('TimeOut called');
}, 5000);
}, 2000);
263
3VM527:2 Interval running
VM527:5 TimeOut called
VM527:2 Interval running
VM527:5 TimeOut called
VM527:2 Interval running
VM527:5 TimeOut called
VM527:2 Interval running