如何在javascript中将API调用的返回值赋给类成员变量

时间:2018-02-06 22:26:34

标签: javascript ajax fetch-api

我有一个具有成员变量名称和函数 getdata()的类。 该函数进行API调用并将其接收的值分配给成员变量

class Person
{
constructor()
    {
    this.name = this.getdata();
    }
getdata()
    {
    $.ajax({
          url: 'https://randomuser.me/api/',
          dataType: 'json',
          success: function(data) {
            console.log(data);
            this.name = data;
          }
        });
    }

}

但未分配该值。

我也尝试了获取:

class Person
{
constructor()
    {
    this.name = this.getdata();
    }
getdata()
    {

    fetch('https://randomuser.me/api/').then(function(response) {
                return response.json();
            }).then(function(j) {
            this.name = j                   
    });
    }

}

但它并没有在当时的函数中识别出这个

1 个答案:

答案 0 :(得分:0)

您可能希望在JS中查看a question on the use of this。您在函数中指定的this不是您期望的。

最快的解决方法是执行类似

的操作
// ...
getData: function() {
  const self = this;
  fetch(...).then(...
    self.name = j
  )
}

但使用arrow functions也可以解决此问题。