Promise請求

* Promise請求
function queryData(url){
    var p = new Promise(function(resovle,reject){
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(){


    if(xhr.readyState !=4) return;
    if(xhr.readyState == 4 && xhr.status == 200){
        resovle(xhr.responseText);
    }else{
        reject('服務器錯誤')
    }
    };
    xhr.open('get',url);
    xhr.send(null);
    });
    return p;
}
queryData('http://')
    .then(function(data){
        console.log(data);
    }),function(info){
        console.log(info)
    }

# 發送多個ajax請求並保證順序
通過return 循環調用queryData實現
queryData('http://')
    .then(function(data){
        console.log(data);
        return queryData('http://')
    }),
    .then(function(data){
        console.log(data);
        return queryData('http://')
    }),
    .then(function(data){
        console.log(data);
    }),

* Promise常用API
1.實例方法

var p = new Promise(function(resovle,reject){

})
- p.then() 獲得異步任務的正確結果
- p.catch() 獲得異常信息
- p.finally() 成功與否都會執行(尚且不是正式標準)

-Promise.all()  併發處理多個異步任務,所有的任務全部完成後獲得結果

-Promise.race()併發處理多個異步任務,只要有一個任務完成就獲得結果

var p1 = queryData(url)

var p2 = queryData(url)

var p3 = queryData(url)

Promise.all([p1,p2,p3]).then(function(result){

console.log(result)

})

Promise.race([p1,p2,p3]).then(function(result){

console.log(result)

})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章