直接上代码:
function fun1() {
console.time('test');
}
function fun2() {
console.timeEnd('test');
}
setTimeout(fun1,100);
setTimeout(fun2,200);
function waitFn(time) {
var start = new Date().getTime();
var flag = false;
while(!flag) {
var now = new Date().getTime();
if(now - start >= time){
flag = true;
}
}
}
waitFn(500);
测试结果是 0.224ms 左右(使用nodejs测试)。
waitFn 是同步方式执行阻塞了定时器的调用,500ms后,setTimeout等待主线程的执行完毕,之后立即调用两个定时器中的函数,几乎同时执行,直接输出结果。