异步Promise

2021-04-27  本文已影响0人  乘风破浪的哥哥

Promise介绍

异步通信编程的一种解决方案
定义方式:

let p = new Promise((resolve,reject) => {
    // 异步操作
    if(true){
        resolve('执行成功')
    }else{
        reject('执行失败')
    }
}).then(value=>{
    console.log(value)
}).catch(reason=>{
    console.log(reason)
})
// 输出 执行成功

resolve表示执行成功后的操作【then】,reject表示执行失败后的操作【catch】
执行then后,依旧返回promise实例

let p1 = new Promise((resolve,reject) => {
    setTimeout(()=>{
        resolve('1.异步')
    },3000)
})

let p2 = new Promise((resolve,reject) => {
    setTimeout(()=>{
        resolve('2.异步')
    },800)
})

let p3 = new Promise((resolve,reject) => {
    setTimeout(()=>{
        resolve('3.异步')
    },1500)
})

p1.then((value)=>{
    console.log(value)
    return p2
}).then((value)=>{
    console.log(value)
    return p3
}).then((value)=>{
    console.log(value)
})
// 输出 1.异步
//     2.异步
//     3.异步

Promise.all()

助手函数,可以直接按照顺序,依次执行promise函数

let p = Promise.all([p1,p2,p3])
p.then((value)=>{
  console.log(value)
})
// 输出 ['1.异步','2.异步','3.异步']

Promise.race()

助手函数,哪个promise先执行完,返回哪个

let p = Promise.race([p1,p2,p3])
p.then((value)=>{
  console.log(value)
})
// 输出 2.异步

Promise提供 resolve() 和 reject(),直接返回成功或者失败的promise实例

let ps = new Promise.resolve('成功')
let pj = new Promise.reject('失败')

常用的场景,保持类型的统一
在有的方法中,通过条件的不同,返回的内容类型不一样,可以通过包装,让方法的返回内容类型一致,都是promise对象

上一篇 下一篇

猜你喜欢

热点阅读