无法访问回调函数内部的构造函数的“ this”

时间:2019-09-01 16:38:20

标签: javascript

我正在尝试将“ this.dishes”设置为与在类的构造中调用API所获得的结果相等,但是却收到错误消息,提示“未捕获的TypeError:无法设置未定义的属性'dishes' ”。基本上由于某种原因,“ this”关键字是未定义的,因此无法分配该值。

我的构造函数是:

class DinnerModel {

constructor() {

this.getAllDishesfromAPI(function(err,result){
    if(err){
        console.log(err);
    }
    else{
        console.log(result);
        this.dishes = result;
    }
  });
}

我的api函数是:

getAllDishesfromAPI(callback){
       let URL = "some url";
       let xhr = new XMLHttpRequest();
       xhr.open("GET", URL, true);
       xhr.setRequestHeader("X-Mashape-Key", "xxxx");
       xhr.send();
       xhr.onload = function() {
           if (xhr.status != 200) { // analyze HTTP status of the response
            callback(xhr.status,null);

           } else { // show the result
              // this.dishes = xhr.response;
              callback(null,xhr.response);
           }
         };
         xhr.onerror = function() {
         callback(xhr.status,null);
         };
}
}

由于某种原因,我可以在this.dishes函数之外为callback分配任何值。

0 个答案:

没有答案