我已经阅读了大量关于ES6的文档以及随之改变的内容。我试图用一些新的库(如fetch)来接受新的oop语法。所以这是我的代码:
apiCall(url, thisAlias=this){
fetch(url).then(function(response){
return response.json();
})
.then(function(respObj){
thisAlias.domUpdater(respObj);
});
}
这是在具有继承类的基类中,并且最终将具有许多继承的类。我的想法是使用fetch进行通用api调用,我可以更改每个继承类的domUpdater方法。我花了很多时间来使这个代码工作,对this关键字进行别名,以便可以在fetch调用中使用它。有没有更优雅的方式来做到这一点?我似乎无法直接将其作为论据传递。
答案 0 :(得分:4)
使用具有词汇this
的{{3}}将最有助于您使用此特定代码
apiCall (url) {
fetch(url).then(
response => response.json()
).then(
respObj => this.domUpdater(respObj)
).catch(
err => console.error(err.message, err)
)
}
否则,如果你可以使用较新的async
/ await
,那么即使没有箭头功能,你也不必担心this
指向错误的东西。
async apiCall (url) {
try {
let response = await fetch(url);
this.domUpdater(response.json());
}
catch (err) {
console.error(err.message, err);
}
}