简单的promise例子

let _promise = new Promise((resolve, reject) => {
            // promise最核心的是状态的改变,要想把异步变同步还是要async await
            const xhr = new XMLHttpRequest();
            xhr.open('get', URL);
            xhr.send();
            xhr.addEventListener('readystatechange', () => {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        resolve(JSON.parse(xhr.response));
                    } else {
                        reject('不是前端的锅');
                    }
                }
            })
        });

        // then里面是成功的回调函数与失败的回调函数({}里面的是成功接受或失败后要执行的操作)
        _promise.then(
            // 成功回调
            (ajaxdata) => {
                console.log(ajaxdata);
                ajaxdata.data.forEach(item => {
                    console.log(item);
                });
            },
            // 失败回调
            (msg) => {
                console.log(msg);

            });

        // 链式调用 (1)——(3)只要有一个失败都不会继续执行,并且不会到下一步的reject()而是到(4),被catch()捕获,(5)无论成功或失败都会执行
        // _promise.then(()=>{},()=>{}) (1)
        //         .then(()=>{},()=>{}) (2)
        //         .then(()=>{},()=>{}) (3)
        //         .catch(()=>{})       (4)
        //         .finally(()=>{});    (5)
posted @ 2022-01-11 23:08  隐形的喷火龙  阅读(60)  评论(0)    收藏  举报