Promise是一个承诺对象 存放着将来才会执行代码 主要获取异步操作得消息
创建promise对象 new Promise(()=>{})
参数:回调函数(resolve,reject)
resolve----表示promise实例状态为fullfilled回调函数---表示请求成功得回调函数
reject ---表示promise实例状态为rejected回调函数 ----表示请求失败得回调函数
promise实例对象有三种状态:
pending 未操作/进行中
fullfilled 已成功
rejected 已失败
promise实例方法:
then方法:当实例状态为fullfilled时候执行回调函数 resolve()
catch方法:当实例状态为rejected时候执行回调函数 reject()
// 封装ajax 或者 axios 使用promise
// 封装工厂函数 得到一个基于promise得ajax请求
function getPromise(method,url,data,params){
// data---post携带参数 params---get请求携带参数
return new Promise((resolve,reject)=>{
var xhr = new XMLHttpRequest();
xhr.open(method,url);
xhr.send();
xhr.onreadystatechange = function(){
if(xhr.readyState===4){
if(xhr.status===200){
resolve(xhr.response)
}else{
reject(xhr.responseText)
}
}
}
})
}
let p1 = getPromise('get','http://121.199.0.35:8888/index/carousel/findAll');
let p2 = getPromise('get','http://121.199.0.35:8888/index/category/findAll');
console.log(p1,p2);
p1.then(res=>{
console.log(JSON.parse(res),'111')
})
p2.then(res=>{
console.log(JSON.parse(res),'222')
});
静态方法:
1.Promise.all 参数:可迭代数据结构 一般是数组([多个promise实例]) 只有所有promise实例都fullfilled最终promise为fullfilled
返回promise实例对象
2.any 参数:可迭代数据结构 一般是数组([多个promise实例])
返回promise实例对象 只要有一个实例是fullfilled 就为fullfilled
3.race 参数:可迭代数据结构 一般是数组([多个promise实例])
返回实例先改变为fullfilled得promise实例