关于js执行的一些理解

js引擎是单线程的,不能同时执行多个任务,必须是一个任务执行完,才会去执行下一个任务,它有一个主进程(main thread),还有一个任务队列(task queue),js引擎包含一个调用栈(callback stack),用于函数执行的入栈和出栈。

当js引擎遇到异步setTimeout的时候,会把它交给浏览器内核的timer模块去处理,如果有连续几个相同延时的setTimeout,timer模块会在主进程处理完之后,等待相同的时间,再把延时的回调函数按照注册(代码执行先后)的顺序返回给任务队列,然后js引擎会按顺序执行任务队列里的回调函数,回调函数之间执行的时间消耗差距特别小,一般是微秒 或者 毫秒 级别的,所以有时候会给人一种它们是同时开始执行的假象!

你可能感兴趣的:(关于js执行的一些理解)