setTimeout的两个参数,你真的了解吗?
2020-07-20 本文已影响0人
程序员李钟意
- 函数 setTimeout 接受两个参数:待加入队列的消息和一个时间值(可选,默认为0)。这个时间值代表了消息实际加入到队列的最小延迟时间。
- 如果队列中没有其他消息并且栈为空,在这段时间过去之后,消息会被马上处理。但是,如果有其他消息,setTimeout 消息必须等待其他消息处理完。
- 因此第二个参数仅仅表示最少延迟时间,而非确切的等待时间。
const s = new Date().getSeconds();
setTimeout(() => {
// 输出“2”,表示回调函数并没有在 500 毫秒之后立即执行
console.log(`Ran after ${new Date().getSeconds() - s} seconds`);
}, 500);
white(true) {
if (new Date().getSeconds() - s >= 2) {
console.log('Good, looped for 2 seconds');
break;
}
}