你可能需要知道的前端小知识——JavaScript的执行

·  阅读 81

回顾

JavaScript的执行

  • JavaScript引擎会常驻于内存中,等待宿主把JavaScript代码或者函数传递给它执行,这样的任务是宏观任务
  • ES5之后,JavaScript引入了Promise,不需要宿主发起,JavaScript引擎本身也可以发起任务,这样的任务是微观任务
  • 有了宏观任务和微观任务机制,就可以实现JavaScript引擎级和宿主级的任务

宏观任务

  • JavaScript引擎在执行任务之前,都是在等待宿主分配任务,有任务就执行,执行后再等待。
  • JavaScript的每次执行,都是一个宏观任务。
  • 多个宏观任务使用队列来管理。
  • 在宏观任务中,JavaScriptPromise还会产生异步代码。JavaScript必须保证这些异步任务在一个宏观任务中。所以,每个宏观任务中又包含一个微观任务队列。
  • 宿主API会添加宏观任务进入宏观任务队列

微观任务

Promise
  • 需要进行异步操作的函数,先不返回真的结果,先返回一个承诺。在合适的时机,选择等待这个承诺兑现。
  • Promise.then是一个异步执行的函数

async/await

  • 只使用Promise,发现代码结构和回调函数的写法并没有很大的改进,async/awaitPromise配合使用,可以有效的改善代码结构,一些异步的函数看上去更“像”同步。
  • 运行时基础是Promise
  • function关键字前加上async关键字,在函数体内就可以使用await来等待Promise
  • 可以嵌套使用。

总结

  • 程序 = 数据 + 算法。
  • JavaScript程序相关的数据类型和执行相关的总结就是这些了。
  • 更多的可以查看专栏。
  • 有不同的想法,欢迎留言评论。
分类:
前端
分类:
前端