关于js执行的一些理解

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前对JS运行机制不太明白,直到读了阮一峰文章后,突然脑洞大开.当然中间也遇到了一点理解上的问题,我只做了一点稍微...
    码太农阅读 3,772评论 0 1
  • JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInt...
    晚晴幽草阅读 5,569评论 1 18
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,636评论 0 5
  • 说起JS的异步执行机制,如果百度一下,你首先会发现阮一峰的写过一篇关于异步机制的文章(http://www.rua...
    microkof阅读 9,026评论 0 13
  • w 把今天所读的内容总结成自己话语写出来 o 可以提炼出,表达出,书写出读的内容 o 看完后,不知道如何去写 p ...
    小风在路上阅读 656评论 0 0