* 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)
})