js异步编程
js 异步编程#
js 采用单线程模式, 优点:安全/简单 缺点:耗时需等待
同步模式#
大多数任务都是同步执行,逐行执行
异步模式#
- 开启过后立即执行下一个任务
- 事件循环
Event loop来监听调用栈和消息队列
回调函数#
所有异步编程方案的根基
Promise#
- CommonJS 提出的
- 一个对象
- 初始 pending
- promsie 的对象会率先进入队列,先执行同步的代码
Promise 的案例#
Promised 对象 then 方法会返回一个全新的 Promise 对象
Promsie 静态方法#
Promise 并行执行#
等到多有任务结束才会结束,
promise.race#
只等待一个任务结束
Promise 执行时序问题#
执行时序 / 宏任务 /微任务 与 setTimeout 相比 Promise 优先执行,即使 Promise 在 setTimeout 后面
Promise 回调是微任务执行,立即调用,而 setTimeout 为宏任务执行
Generator 异步方案#
生成器语法 yield 可暂停生成器
递归生成器
Async/Await 语法糖#
语言层面标准语法