Promise 作用
- 主要用于异步计算
- 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
- 可以在对象之间传递和操作promise,帮助我们处理队列
三种状态
reslove 成功
reject 失败
pending初始状态
使用
let fun1 = new Promise((reslove,reject)=>{
setTimeout(()=>{
reslove()//成功状态
console.log('fun1')
},1000)
})
let fun2= new Promise((reslove,reject)=>{
setTimeout(()=>{
console.log('fun2')
reslove()
},3000)
})
fun1().then(()=>{
console.log('fun1方法执行完毕')
fun2().then(()=>{
console.log('fun2方法执行完毕')
})
})
输出顺序:'fun1'>'fun1方法执行完毕'>'fun2'>'fun2方法执行完毕'
async 和await 的使用
async 异步 await 等待
// 写在普通函数前面 表示这是一个处理异步的函数
async function init(){
await run5()
await run1() //等待当前函数执行完
await run2()
await run4()
await run3()
}
init() //调用异步函数
function run1(){
setTimeout(()=>{
console.log('1')
},1000)
}
function run2(){
setTimeout(()=>{
console.log('2')
},1000)
}
function run3(){
setTimeout(()=>{
console.log('3')
},1000)
}
function run4(){
new Promise((reslove,reject)=>{
console.log('4')
reslove()
})
}
function run5(){
setTimeout(()=>{
console.log('5')
},2000)
}
输出顺序:'5'>'1'>'2'>'4'>'3'
结论:Promise 配合 async/await使用:
1.主要解决普通异步函数的回调地狱问题2.队列化执行使代码结构更加简洁清晰,便于维护,增加代码的可读性
发表评论 取消回复