ES6:如何使用“this”,带fetch?

时间:2016-10-26 05:08:17

标签: javascript json api ecmascript-6 fetch

我已经阅读了大量关于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调用中使用它。有没有更优雅的方式来做到这一点?我似乎无法直接将其作为论据传递。

1 个答案:

答案 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);
  }
}