let _promise = new Promise((resolve, reject) => {
// promise最核心的是状态的改变,要想把异步变同步还是要async await
const xhr = new XMLHttpRequest();
xhr.open('get', URL);
xhr.send();
xhr.addEventListener('readystatechange', () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
resolve(JSON.parse(xhr.response));
} else {
reject('不是前端的锅');
}
}
})
});
// then里面是成功的回调函数与失败的回调函数({}里面的是成功接受或失败后要执行的操作)
_promise.then(
// 成功回调
(ajaxdata) => {
console.log(ajaxdata);
ajaxdata.data.forEach(item => {
console.log(item);
});
},
// 失败回调
(msg) => {
console.log(msg);
});
// 链式调用 (1)——(3)只要有一个失败都不会继续执行,并且不会到下一步的reject()而是到(4),被catch()捕获,(5)无论成功或失败都会执行
// _promise.then(()=>{},()=>{}) (1)
// .then(()=>{},()=>{}) (2)
// .then(()=>{},()=>{}) (3)
// .catch(()=>{}) (4)
// .finally(()=>{}); (5)