ES6中promise

代码1:

<script>
    /**
     * promise是对于异步操作*/

    let p1 = new Promise(function (resolve, reject) {
        //异步代码
        //resolve成功的处理
        //reject失败的处理

        $.ajax({
            url: "arr.txt",
            dataType: "json",
            success(arr) {
                resolve(arr)
            },
            error(err) {
                reject(err);
            }
        })
    })

    p1.then((arr) => {
            console.log("ajax成功")
            console.log(arr);
        },
        (err) => {
            console.log("ajax失败")
            console.log(err);
        })

    //接下来存在多个promise
    let p2 = new Promise(function (resolve, reject) {
        $.ajax({
            url: "json.txt",
            dataType: "json",
            success(arr) {
                resolve(arr)
            },
            error(err) {
                reject(err);
            }
        })
    })


    //Promise中存在all方法只有所有的异步请求都是成功的才会执行成功的方法
    Promise.all([p1, p2]).then(function (arr) {
        console.log("异步请求都成功了");
        console.log(arr);
    }, function () {
        console.log("有一个异步请求失败了");
    })
</script>

  代码2:

<script>

    /**
     * promise是异步操作的包装,then方法可以将resolve和reject方法放到promise对象中继续执行,
     * 并且then函数返回的仍然是一个promise对象(前提是执行的结果没有返回对象,或者返回的不是Promise
     * 对象),若返回的是一个全新的Promise对象那么就可以继续then下去
     * */
    function Pro() {
        return new Promise(function (resolve, reject) {
            $.ajax({
                url: "arr2.txt",
                dataType: "json",
                success(arr) {
                    resolve(arr)
                },
                error(err) {
                    reject(err);
                }
            })
        })
    }

    let p1 = new Pro()

    //Promise对象在执行完then函数对象之后,与之前Promise对象之间的差距
    // console.log(p1);
    // console.log(p1.then(() => {
    //     console.log("success11111");
    //     // return new Pro()
    // }, () => {
    //     console.log("error11111");
    //     // return new Pro()
    // }));
    // console.log("-------------------------------------");


    //Promise的链式编程
    p1.then(() => {
        console.log("success11111");
        // return new Pro()
    }, () => {
        console.log("error11111");
        return new Pro()
        // return "1111"
    }).then(() => {
        console.log("success22222");
    }, () => {
        console.log("error22222");
    })
</script>

  

posted @ 2021-01-19 20:56  coderLsq  阅读(24)  评论(0)    收藏  举报