setTimeout的回调加入异步队列,延迟时间是从什么时候开始计算的
来源:4-2 单线程 - 介绍-1
weibo_慕莱坞2325037
2019-12-03
老师您好,
比如说我有以下代码
// 延迟2000ms的异步A
setTimeout(function () {
console.log("2s later");
}, 2000);
// 无延迟异步B
setTimeout(function () {
console.log("first");
});
// 最后一行代码
console.log("完成");
问题是:
-
异步A的回调函数加入异步队列的时间,
是在执行完最后一行代码后,延迟2000ms再加入,
还是说从执行setTimeout函数那一刻起就开始计算2000ms。 -
同理,如果不传延迟参数,是执行到setTimeout这一行,回调立刻被加入异步队列(即时同步代码没有执行完),
还是说要等到所有同步代码执行完毕才会被立刻加入
写回答
2回答
-
定时任务是异步的,所以说从执行setTimeout就开始计算,只要到了2s,不管主进程的任务有没有执行完成,轮询队列里都会多一个回调函数,至于能不能在2s准时执行,就要看2s内主进程的任务能不能执行完成,若能,就会准时执行,若不能,则会延迟。
10 -
双越
2019-12-03
@weixin_马里奥先生_0 同学回复的没问题。
00
相似问题