基本语法
let p = new Promise((resolve,reject)=>{
resolve('sucess')
})
p.then(result=>{
console.log(result)
})
特点:

Promise.protyte.then&&链式调用
执行之后返回一个Promise对象。
let p = new Promise((resolve,reject)=>{
resolve('sucess')
})
let resolveP = p.then(result=>{
console.log(result)
return 123
})
resolveP.then(result=>{
// 如果resolveP没有设置返回结果,就会返回undefined,否则返回return结果
console.log(result)
})
//console.log(resolveP)
</Script>

Promise.protptype.catch:默认返回Promise值

let p = new Promise((resolve,reject)=>{
reject('失败了!')
})
let resolveP = p.catch(result=>{
console.log(result)
})
Promise.resolve():将现有对象转为promise对象的快捷方法

Promise.reject()

Promise.all()
将多个promise对象合并成一个。
参数:数组,数组项为promise对象

成功:返回数组,结果是数组项

失败:只要有一个reject,返回reject的值。
应用场景:请求多个异步数据

Promise.race()
类似赛跑的概念,多个promise,只要有一个先成功,就会返回成功的promise对象,反之亦然

错误处理
Promise内部的错误外部捕捉不到,必须是通过catch捕捉!!!

Async-Await



async function demo(params) {
}
let p = demo()
console.log(p) // 结果是一个promise对象



案例:发送三个请求,第三个依赖第二个请求结果,第二个依赖第一个。
function sleep(wait){
return new Promise((res,rej) => {
setTimeout(()=>{
res(wait)
},wait)
})
}
async function demo(){
let result1 = await sleep(100)
let result2 = await sleep(result1+100)
let result3 = await sleep(result2+100)
// 此处返回的是一个promise对象
return result3
}
demo.then(result=>{
console.log(result)
})
网友评论