美文网首页
简述同步和异步,以及js的任务队列.

简述同步和异步,以及js的任务队列.

作者: 走羊_45bf | 来源:发表于2020-01-16 13:49 被阅读0次

    javascript是单线程的一门语言,所以在执行任务的时候,所有任务必须排队,然后一个一个的执行.这就是同步模式

      所以同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务;

      异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。

    所以js的运行机制是这样的:

      (1): 所有同步任务都在主线程上执行,形成一个执行栈.

      (2): 主线程之外,还存在一个"任务队列"(task queue)。异步任务进入任务队列等待主线程执行完毕.

      (3): 一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",对应的异步任务结束等待状态,进入执行栈,开始执行。

    怎么知道主线程任务为空: JS引擎中存在monitoring process进程,它会持续不断的检查主线程执行栈是否为空,一旦为空,就会去Event Queue那里检查是否有等待被调用的函数

    相关文章

      网友评论

          本文标题:简述同步和异步,以及js的任务队列.

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