promise處理多個相互依賴的異步請求

在項目中,常常會遇到多個相互依賴的異步請求。若有a,b,c三個ajax請求,b須要依賴a返回的數據,c又須要a和b請求返回的數據。若是採用請求嵌套請求的方式天然是不可取的。致使代碼難以維護,如何請求不少。會出現不少問題。ajax

Promise就是解決多個異步請求的問題。 Promise是ES6提供的一個對象,用來傳遞異步操做的消息。json

Promise有三種狀態:Pending(進行中)、Resolved(已完成,又稱 Fulfilled)和 Rejected(已失敗)。異步

直接上代碼。有a,b請求,b依賴a的請求數據。以下:async

     function a(){
            return new Promise(function(res,rej){
                $.ajax({
                    url:"a",
                    type: "GET",
                    async:true,
                    dataType:"json",
                    success:function(data){
                        console.log(data,"a");
                        res(data);
                    }
                })
            });
        }
        function b(data){
            console.log(data,"data");
            return new Promise(function(res,rej){
                $.ajax({
                        url:"b",
                        type: "POST",
                        async:true,
                        data:JSON.stringify(data),
                        dataType:"json",
                        success:function(data){
                            console.log(data,"b");
                            res();
                        }
                    })
            });
        }
        $("#btn").click(function(){
            a().then(function (data){
                b(data);
            }).then(function(){
            })
        })

接口url在網上找了一個,能夠看運行結果:url

相關文章
相關標籤/搜索