SOURCE

// var p = Promise.resolve('成功了')
// const p = Promise.reject('失败了')
// 失败可以用两种方式接收
// 1. .catch捕捉
// p.catch(err => {
//     console.log(err)
// })
// 2. .then方法的第二个参数的回调函数
// p.then(res => {
//     console.log(res)
// }, err => {
//     console.log(err)
// })

const p1 = new Promise((resolve, reject) => {
    const result = true
    setTimeout(() => {
        if (result) {
            resolve('p1成功了')
        } else {
            reject('p1失败了')
        }
    }, 1000)
})
const p2 = new Promise((resolve, reject) => {
    const result = 13
    setTimeout(() => {
        if (result > 9) {
            resolve('p2成功了')
        } else {
            reject('p2失败了')
        }
    }, 1000)
})
const p3 = new Promise((resolve, reject) => {
    const result = 13
    setTimeout(() => {
        if (result > 20) {
            resolve('p3成功了')
        } else {
            reject('p3失败了')
        }
    }, 1000)
})

// p1.then(res => {
//     console.log(res)
//     return p2
// }, err => {
//     console.log(err)
// }).then(res => {
//     console.log(res)
//     return p3
// }, err => {
//     //进入到失败状态
//     console.log(err)
// }).then(res => {
//     console.log(res)
// }, err => {
//     //进入到失败状态
//     console.log(err)
// })

// Promise.all([p1,p2,p3]).then(res => {
//     console.log('都成功了')
// }).catch(err => {
//     console.log(err)
// })

function p4() {
    return new Promise((resolve, reject) => {
        const result = 13
        setTimeout(() => {
            if (result > 12) {
                resolve('p3成功了')
            } else {
                reject('p3失败了')
            }
        }, 1000)
    })
}

// async修饰的函数默认返回一个promise,return的是成功返回的参数。
    // 通过调用这个函数的then和catch方法拿到await得到的结果
async function p5() {
    const res = await p1
    return res
}

p5().then(res => {
    console.log(res)
}).catch(err => {
    console.log(err)
})
console 命令行工具 X clear

                    
>
console