ajax 调用是否有任何 ES6 等价物?
Is there any ES6 equivalent for ajax call?
在 vanillaJS 中我们正在做类似的事情来 ajax 调用 :
var request = new XMLHttpRequest();
request.open('GET','file.json',true);
request.onload = function (){
if(this.status >= 200 && this.status<400){
var data = JSON.parse(this.response);
console.log(data);
}
else{console.log("Error !");
}
request.send();
现在,如果我们使用箭头函数执行此操作,它将无法工作,因为 this
关键字。
有没有办法解决这个问题并将其与箭头功能一起使用,还是我应该坚持使用旧方法?
简而言之,XMLHttpRequest
(甚至 fetch
)没有“ES6 等价物”,只是因为 none 是 ECMAScript 功能,但属于 Web 平台的一部分API 由 WHATWG 和 W3C 定义。
但是,要以更“现代”的方式重写您的代码,使用一些 ES6 功能,您可以按以下步骤进行:
const request = new XMLHttpRequest();
request.addEventListener('load', (e) => {
// YOU COULD ALSO ACCESS request AS e.target HERE.
if (request.status >= 200 && request.status < 400) {
const data = JSON.parse(request.response);
console.log(data);
} else {
console.log('ERROR');
}
});
request.open('GET', 'file.json');
request.send();
本质上我们使用的是addEventListener
API(这仍然不是 ES 的特性,而是处理浏览器事件的最新规范)。然后我们使用 const
和箭头函数作为 ES6 特性的处理程序。
您不需要使用 this
,因为您可以通过 event
对象或利用存储在 request
变量中的引用来访问您的请求。
在 vanillaJS 中我们正在做类似的事情来 ajax 调用 :
var request = new XMLHttpRequest();
request.open('GET','file.json',true);
request.onload = function (){
if(this.status >= 200 && this.status<400){
var data = JSON.parse(this.response);
console.log(data);
}
else{console.log("Error !");
}
request.send();
现在,如果我们使用箭头函数执行此操作,它将无法工作,因为 this
关键字。
有没有办法解决这个问题并将其与箭头功能一起使用,还是我应该坚持使用旧方法?
简而言之,XMLHttpRequest
(甚至 fetch
)没有“ES6 等价物”,只是因为 none 是 ECMAScript 功能,但属于 Web 平台的一部分API 由 WHATWG 和 W3C 定义。
但是,要以更“现代”的方式重写您的代码,使用一些 ES6 功能,您可以按以下步骤进行:
const request = new XMLHttpRequest();
request.addEventListener('load', (e) => {
// YOU COULD ALSO ACCESS request AS e.target HERE.
if (request.status >= 200 && request.status < 400) {
const data = JSON.parse(request.response);
console.log(data);
} else {
console.log('ERROR');
}
});
request.open('GET', 'file.json');
request.send();
本质上我们使用的是addEventListener
API(这仍然不是 ES 的特性,而是处理浏览器事件的最新规范)。然后我们使用 const
和箭头函数作为 ES6 特性的处理程序。
您不需要使用 this
,因为您可以通过 event
对象或利用存储在 request
变量中的引用来访问您的请求。