十八、Promise相关
-
Promise 对象:提供了异步编程的一种解决方案(解决地狱回调)
Promise 可以理解为:一个保存着某个未来才会结束的事件的容器
-
特点:三种状态 → 进行中(pending)、已成功(fullfilled)、已失败(rejected)
-
Promise需要用到很多then时:代码的可维护性就会变差 ➡️出现Generator和async、await
Generator
-
Generator:普通函数 ➡️可以定义不同的状态
-
语法:声明时function关键字之后有*,内部使用yield表达式定义不同的状态
function* gen(){ yield new Promise(1) yield new Promise(2) return 'end' //也可以不返回 } let g = gen() //g.next = 执行证 -- 执行下一步并返回对象:{value:'fase1', done: false} g.next().value.then(res => { console.log(res) }) g.next().value.then(res => { console.log(res) }) // 若没有generator:会出现then嵌套 new Promise().then(res => { new Promise().then(res =>{})}).then(res => {})
async、await
-
async、await:同样用于解决异步编程,Promise中的回调地狱问题,该方法使用顺序不会变
async function fn(){ let a = await new Promise({z:1}) // 将Promise解体成普通对象 let b = await new Promise({x:2}) // 先执行1,再执行2 console.log(a.z, b.x) //1,2 }