Promise

<script>
    const p = new Promise(((resolve, reject) => {
        setTimeout(() => {
            console.log('hello world')
            resolve("hi")
            // reject("err")
        }, 1000)
    }))
    //  then方法调用返回值仍是一个promise
    //  1.如果回调函数中返回的结果是 非Promise 类型的属性,状态为成功,返回值为对象的成功值
    //  2.如果如果回调函数中返回的结果是 Promise 类型的属性,相当于对这个返回的promise进行操作
    const result = p.then((res) => {
        console.log(res)
        // 1、非promise类型,result值为一个promise对象,状态为成功,返回值value为123
        //    return 123

        // 2、promise对象,该promise对象的结果,就是result的结果,相当于对这个返回的promise进行操作
        //  这里写return 是因为result需要得到返回值 hi, 如果不写,result的结果仍是一个promise,只是value为undefined,对result进行链式调用的时候没法得到res的值
        // return new Promise(((resolve, reject) => {
        //     setTimeout(() => {
        //         console.log('good')
        //         resolve("hi")
        //         // reject("err")
        //     }, 1000)
        // }))

        //    抛出错误,result的结果为一个promise,状态为rejected,
        throw new Error("出错了")

    }, (err) => {
        console.log(err)
        return 321
    })
    // result.then((res)=>{
    //     console.log(res)
    // })
    console.log(result);
</script>

 

上一篇:实现一个Promise.all


下一篇:5.Promise值得穿透和静态方法的实现