关于JavaScript中Async部分的一点整理

89 阅读1分钟

关于JavaScript中Async部分的一点整理

为什么

  • 提高效率啊,js作为一门单线程(Single Thread)语言,如果某个程序satement需要过长的时间去执行,势必阻止其后续步骤的执行,是一种不可接受的行为。
  • 从执行角度,a single threaded language means it has only one call stack and one memory heap.

如何做

  • callback
  • promise
  • async await

稍微深入一点点

js被设计文一种单线程的语言

  • 结合js产生的历史,页面交互式它非常存在的非常重要的一项功能。据此,单线程的设计可以有效的避免多个任何同时修改页面元素造成的混乱

Sync vs. Async 模型

image.png

如何支持async javascript的特性的呢

  • Javascript运行时环境,除了常规的引擎所支持的特性(如ECMAScript规范,lexical环境,语法解析,执行上下文...)外, 一个完整的RUn-time环境还拥有并支持Event-Loop, Callback queue,和各种WebAPI可被调用,解析并处理那些asynchronous tasks.
  • 如上Async模型,js代码的执行一样依然是从上至下line by line, 只是当碰到某个操作是一个异步行为时即会将对应的程序交由相关的webAPI去执行(非主线程的另外执行线程)

代码实现上的进化