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