首页 > 解决方案 > 在 setTimeout 和 setInterval 之间先执行哪个?

问题描述

根据 MDN,函数中的回调setTimeout()仅在主线程上的堆栈为空时执行。函数是否相同setInterval() ?如果是,那么当这两个功能都存在时,哪个将首先执行?

我正在使用 node.js 环境我得到一些与下面的代码不一致的结果

var i = 0;
function cal(){
     i++; 
console.log(i);
if(i == 2) clearInterval(inter);
}
const inter = setInterval(cal,2000);

setTimeout(()=> {
    console.log('Hello');
},2000)

我得到的输出是

1
Hello
2

但是如果我在下面运行代码

setTimeout(()=> {
    console.log('Hello');
},2000)

var i = 0;
function cal(){
     i++; 
console.log(i);
if(i == 2) clearInterval(inter);
}

const inter = setInterval(cal,2000);

我得到的输出是

Hello
1
2

标签: javascriptnode.js

解决方案


推荐阅读