深入理解JS中的--同步和异步

  • JS中的两种编程思想:同步、异步
  • JS是单线程的 --> JS就是一个傻子,脑子一根筋,做着当前的这件事情,没有完成之前,绝对不会做下一件事情

  • 同步就是 --> 上一件事情没有完成,继续处理上一件事情,只有上一件事情完成了,才会做下一件事情 --> JS中大部分都是同步编程



深入理解JS中的--同步和异步_第1张图片

JavaScript为什么是单线程?eventloop

  • JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。

  • 异步执行:

1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。

(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。

(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。

(4)主线程不断重复上面的第三步。

主线程从”任务队列”中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop(事件循环)。

你可能感兴趣的:(JavaScript)