异步编程原创
# 异步编程
# Promise和async和await
- promise解决了回调地狱的问题
- async和await解决了then链式调用的问题
# 异步的方法
- 事件监听/发布订阅:手动触发事件。
- 回调函数:简单易理解,可能会嵌套导致结构混乱。
- promise:异步代码的容器,支持链式调用,可能会调用链过长
- generator:状态机,可以控制代码的执行,但需要手动执行
- async+await:自带执行器,无需手动执行,目前最好的异步方法
# 事件循环机制
- 从上往下依次执行
- 同步代码直接执行,异步代码放入队列
- promise.then( console.log("我是异步") )
await console.log( "我是同步" )
console.log( "我是异步" )
- 只有以上两种情况是微任务
- 一般的异步代码都是宏任务
# 事件执行的顺序
- Script——>Process.nexttick——>Promise——>setTimeout——>IO——>UIRender
- Script——>Process.nexttick——>Promise——>setTimeout——>setImmediate