美文网首页
单线程、任务队列轻解读

单线程、任务队列轻解读

作者: 清苑折纸 | 来源:发表于2019-05-25 22:49 被阅读0次
  • 通常在程序中事件都是顺序执行的,同一时刻只能发生一件事情,如果函数之间有依赖关系,则依赖函数必须等待被依赖函数执行完成之后才能开始执行。

  • JS中的任务是分为同步任务和异步任务两种的。

  • 同步任务是在主线程上排队一个一个去执行的任务,异步任务则是将任务加入到任务队列,在主线程上的任务执行完毕之后再处理的。

  • 在JS当中即使浏览器有多核也依然是单线程的,即同一时刻只能处理一件事情,称为主线程

Task A --> Task B -->Task C

setTimeout和setInterval是属于典型的异步函数


image.png

在上例中主线程的任务就是setTimeout之外的console.log()函数。函数执行时遇到setTimeout会将其加入到任务队列等待主线程上的任务执行完成之后再执行。但这可能会造成阻塞,由于单线程任务的特性,必须等待前一个任务执行完成之后才执行。如下例:


image.png

相关文章

  • 单线程、任务队列轻解读

    通常在程序中事件都是顺序执行的,同一时刻只能发生一件事情,如果函数之间有依赖关系,则依赖函数必须等待被依赖函数执行...

  • Dart线程模型及异常捕获

    单线程 以类似JS的,单线程中是以消息循环机制来运行的。包含一个微任务队列 ,和一个事件队列。微任务队列的执行优先...

  • 微任务和宏任务

    JS是单线程的,可以把这个线程叫做主线程,主线程中包含宏任务队列和微任务队列,宏任务所在的队列就叫宏任务队列,微任...

  • promise ES6 一看就懂

    Promise 我们都知道JavaScript是单线程执行的,执行的顺序是按照任务队列来执行的。 什么是任务队列?...

  • ES6 -异步编程

    javascript 是基于单线程的,如果想实现多个任务,需要任务队列来实现。 事件模型:点击按钮触发事件队列,异...

  • JS单线程与任务队列

    javascript单线程与任务队列 一、JavaScript为什么设计为单线程? JavaScript语言的一大...

  • JavaScript事件循环机制

    JavaScript单线程执行 同步栈执行完成后,再执行异步队列 异步队列中分为宏任务和微任务 微任务比宏任务优先...

  • 面试系列 - EventLoop

    JS是单线程语言:顺序执行 任务队列宏任务(macro-task):整体代码 setTimeout setInt...

  • 运行机制,宏任务 与 微任务

    运行机制: JS 的本质是单线程执行 事件队列:同步任务,异步任务() 运行机制 1,JS 的本质是单线程执行 单...

  • 事件轮询-来自整理,便于自己查看

    需要了解的点:单线程,同步、异步,执行栈,任务队列,宏任务,微任务 什么是单线程 单线程是指同一时间只能做一件事情...

网友评论

      本文标题:单线程、任务队列轻解读

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