大前端~JavaScript异步编程

2021-04-09  本文已影响0人  KK_boy

可以实现JavaScript异步编程的方法有:

任何函数的声明都不会产生调用。

阻塞可能会产生页面卡顿或卡死。

压栈,弹栈

Eventloop只做一件事情,就是监听调用栈(Call Stack)和消息队列(Queue),依次把消息队列里的第一个任务压入到调用栈里执行,直到所有任务执行完。

消息队列里的任务会排队等待事件循环。

消息队列可以比喻为待办任务表,调用栈为正在执行的任务表

注意

回调函数:所有异步调用方法的根基。

CommonJS社区提供了Promise的规范

promise的状态一旦被确定就不能再修改

Promise本质上也是使用回调函数定义的异步任务执行后所需要执行的任务

同一个Promise链条,前面的Promise的异样会一直往后传递,所以后面的catch可以捕获到。

Promise的静态方法:resolve、reject

Promise.all()等待所有任务结束,Promise.race()只会等待第一个任务结束

回调队列中的任务称为 宏任务,Promise会作为微任务执行

Generator生成器函数

yield可以暂停生成器执行

async await

async是Generator的语法糖

Generator函数的返回值是一个Generator对象

上一篇下一篇

猜你喜欢

热点阅读