- promise是如何解决回调地狱的问题
- promise的状态分为几种,分别是什么
- 待定 pending:初始状态,既灭有被兑现也没有被拒绝
- 已兑现 fulfilled: 意味着操作成功完成
- 已拒绝 rejected:意味着操作失败
- 如何让promise变成已兑现的状态,如何接收已兑现的结果
- 通过resolve可以把promise的状态从pending转变为已兑现
- 通过promise实例.then方法可以接收已兑现的结果
- promise对象用于表示一个异步操作的最终完成(或失败)及其结果
<script>
const isA = true
const isB = true
const isC = true
const isD = true
function A(){
return new Promise((resolve,reject)=>{
console.log("执行A");
setTimeout(()=>{
if(isA){
resolve("成功")
}else{
reject("失败")
}
})
})
}
function B(){
return new Promise((resolve,reject)=>{
console.log("执行B");
setTimeout(()=>{
if(isA){
resolve("成功")
}else{
reject("失败")
}
})
})
}
function C(){
return new Promise((resolve,reject)=>{
console.log("执行C");
setTimeout(()=>{
if(isA){
resolve("成功")
}else{
reject("失败")
}
})
})
}
A().then(res=>{
console.log(res)
return B()
}).then(res=>{
console.log(res)
return C()
}).then(res=>{
console.log(res)
})
</script>
- 使用async await简化promise的异步操作
<script>
const isA = true
const isB = true
const isC = true
const isD = true
async function test(){
const resA = await A()
console.log(resA)
const resB = await B()
console.log(resB)
const resC = await C()
console.log(resC)
}
test()
</script>
- 使用promise简单封装wx.request(注意不要勾选ES6转ES5)
pA(){
return new Promise((resolve,reject)=>{
wx.request({
url:'XXXXXX',
success:(res)=>{
resolve(res)
},
fail:(err)=>{
reject(err)
}
})
})
}
async function test(){
const resA = await pA();
console.log(resA);
}
test()