Promise

作者: 小学生的博客 | 来源:发表于2017-11-30 15:55 被阅读6次

    对Promise一直是迷迷糊糊状态,今天记录总结下

    • Promise 一个对象,用来传递异步操作消息。

    demo

    function getURL(URL) {
            return new Promise( (resolve, reject)=> {
                var req = new XMLHttpRequest();
                req.open('GET', URL, true);
                req.onload = function () {
                    if (req.status === 200) {
                        resolve(req.responseText);
                    } else {
                        reject(new Error(req.statusText));
                    }
                };
                req.onerror = function () {
                    reject(new Error(req.statusText));
                };
                req.send();
            });
        }
    
        var URL = "http://httpbin.org/get";
        getURL(URL).then((value) => {
            console.log(value);
        }).catch((error) => {
            console.error(error);
        });
    

    Promise.resolve

        //写法一
        let promise = new Promise(reslove => reslove(42))
        promise.then(res => {
            console.log(res)
        })
        //写法二
        Promise.resolve(42).then(res=>{
            console.log(res)
        })
    

    Promise.reject

    Promise.reject(new Error('err ')).catch((err) => {
            console.error(err)
     })
    
    • Promise#then 不仅仅是注册一个回调函数那么简单,它还会将回调函数的返回值进行变换,创建并返回一个promise对象。

    Promise.all

    • 接收一个promise对象的数组作为参数,当这个数组里的所有promise对象全部变为resolve或 reject状态是时候,他才会去调用 .then方法

    • promise并不是一个个的顺序执行的,而是同时开始、并行执行的

    Promise.race

    • Promise.race 只要有一个promise对象进入 FulFilled 或者 Rejected 状态的话,就会继续进行后面的处理。

    强烈推荐
    http://liubin.org/promises-book

    相关文章

      网友评论

          本文标题:Promise

          本文链接:https://www.haomeiwen.com/subject/mkhvbxtx.html