javascript - 通过 promise 对象实现ajax请求失败,并抛出错误
本文介绍了javascript - 通过 promise 对象实现ajax请求失败,并抛出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
问题描述:想通过 promise 对象来实现 ajax数据请求
//getDate.json
{
"name":"zzz",
"age":22,
"say":"hello zzz"
}
//demo.js
let getJson = url =>{
let promise = new Promise((resolve,reject) =>{
let xhr = new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.onreadystatechange = () =>{
if(this.readyState !== 4){
return;
}
if(this.status == 200){
resolve(this.response);
}else{
reject(new Error(this.statusText))
}
}
xhr.responseType = 'json';
xhr.setRequestHeader('Accept','application/json');
xhr.send(null);
});
return promise;
};
getJson("getDate.json").then((json) =>{console.log(json);},(err)=>{console.log(err)});
抛出错误:(intermediate value) is not a constructor
解决方案
你代码错误有点多
1.两个new
2.this换成xhr,箭头函数this这个知识点查下吧
3.onsetRequestHeader没有这个函数,应该是setRequestHeader
4.设置格式为json不能获取responseText,必须设置responseType为text才行,另外改成response也行
贴上我改后的代码
let getJson = url =>{
let promise = new Promise((resolve,reject) =>{
let xhr = new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.onreadystatechange = () =>{
if(xhr.readyState !== 4){
return;
}
if(xhr.status == 200){
resolve(xhr.response);
}else{
reject(new Error(xhr.statusText))
}
}
xhr.responseType = 'json';
xhr.setRequestHeader('Accept','application/json');
xhr.send(null);
});
return promise;
};
getJson("getDate.json").then((json) =>{console.log(json);},(err)=>{console.log(err)});
这篇关于javascript - 通过 promise 对象实现ajax请求失败,并抛出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文