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)

})

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