【发布时间】:2021-08-01 12:32:45
【问题描述】:
setTimeout(() => {
console.log(1);
setTimeout(() => {
console.log(2);
setTimeout(() => {
console.log(3);
}, 1000);
}, 1000);
}, 1000)
为什么这段代码允许您按顺序每隔一秒控制台登录一次?我预计代码会同时运行 1、2、3,因为所有计时器都设置为 1000 毫秒。
【问题讨论】:
-
“等待一秒钟打印 1,然后等待一秒钟打印 2”应该会在两秒钟内发生。
-
这能回答你的问题吗? setTimeout or setInterval?
-
嗯,它们是嵌套的。第二次超时在
console.log(1)运行的同时安排。它比调度时间提前 1000 毫秒被调度,而不是某个固定的初始时间点。 -
您是否也尝试过不嵌套运行代码?那会是你描述的结果。
-
@Kinta 代码逐行执行,但函数内部的代码在调用函数之前不会执行。
标签: javascript asynchronous callback settimeout nest