美文网首页
JS的同步与异步任务执行过程

JS的同步与异步任务执行过程

作者: en_young | 来源:发表于2019-07-27 08:53 被阅读0次

JS为了防止任务排队或者等待事件较长的问题,于是将所有的任务分成了:同步任务与异步任务;

比如对于以下事例1的程序,程序的执行结果是什么呢?

事例1

结果为:1、2、3;

同步任务

同步任务都在主线程上执行,形成了一个执行栈;

异步任务

JS的异步是通过回调函数实现的。一般而言,异步函数有以下三种类型:

1、普通事件,如:click,resize等;

2、资源加载,如:load,error等;

3、定时器,包括setInterval(),setTimeout()等;

异步任务相关回调函数添加到任务队列(消息队列)中了;


对于事例1,首先将同步任务放入执行栈中,将异步任务放入任务队列中,如图2:

图2

那么接下来JS是如何执行的呢?

1、先执行执行栈中的同步任务;

2、遇到异步任务(回调函数),先将其放入任务队列(消息队列)中;

3、一旦执行栈中所有的同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务就会结束等待状态,进入执行栈,开始执行。(所以事例1的执行顺序为1、2、3)

以下图3的形象说明可助理解:

图3

                                (所以主车道上有什么比较耗时的操作就会放在应急车道上)

相关文章

  • 浏览器JS事件循环

    单线程 js引擎使用一个主线程来执行js代码,所以js同时仅能执行一个任务。 同步任务与异步任务 同步任务 在主线...

  • js核心知识点系列——《js引擎运行机制》

    知识点: 刚接触js的时候,把js执行顺序划分为同步任务和异步任务两种,同步任务先执行完之后再去执行异步任务,然后...

  • JS的同步与异步任务执行过程

    JS为了防止任务排队或者等待事件较长的问题,于是将所有的任务分成了:同步任务与异步任务; 比如对于以下事例1的程序...

  • 简述JS执行机制 Event Loop

    1.同步异步 JS是单线程的,由上至下排队执行任务代码。为了提高JS的性能又区分为 同步任务 和 异步任务。同步任...

  • setTimeout、Promise、Async/Await 的

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • 同步任务队列、宏观任务队列、微观任务队列

    1、JS是单线程语言,包括同步任务、异步任务,异步任务又包括宏观任务和微观任务 2、执行顺序:同步任务——>微观任...

  • js 异步执行顺序

    js的执行顺序,先同步后异步异步中任务队列的执行顺序: 先微任务microtask队列,再宏任务macrotask...

  • 浏览器中的事件循环

    记忆核心: JS执行: 同步任务在JS主线程(属于渲染进程的线程)执行 异步任务进入任务队列(由事件触发线程维护)...

  • js事件循环机制

    程序开始执行之后,主程序开始执行同步任务,碰到异步任务就把它放到任务队列中,等到同步任务全部执行完之后,js引擎就...

网友评论

      本文标题:JS的同步与异步任务执行过程

      本文链接:https://www.haomeiwen.com/subject/lalsrctx.html