json 如何在fetch中使用“this”?[副本]

brc7rcf0  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

How to access the correct this inside a callback(15个回答)
6年前关闭。
我已经阅读了大量关于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调用中使用。有没有更优雅的方式来做到这一点?我似乎不能直接把它作为一个论点。

lvmkulzt

lvmkulzt1#

使用具有词法thisarrow functions将对这段代码有最大的帮助

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

相关问题