无法使用 js 类获取 FB.api 响应

Cannot get FB.api response with js class

本文关键字:获取 FB api 响应 js      更新时间:2023-09-26

这是我的代码:

function User() {
    var self = this;
    FB.api(someurl, function (response) {
        self.id = response.id;
    });
}

我无法像这样让 id 运行:

var user = new User();
console.log(user.id);

FB.api 是一个带有回调的异步函数。在您读取user.id时,尚未调用回调函数。

也许你应该将异步初始化移出构造函数,添加一个显式的"init"函数:

function User() {
    var self = this;
    this.init = function(onCompletion) {
        FB.api(someurl, function (response) {
            self.id = response.id;
            if (onCompletion) onCompletion();
        });
    }
}
var user = new User();
user.init(function(){
    console.log(user.id);
});

尝试

FB.api(someurl, function(response) {
  console.log(response);
});

并在此处发布响应值。

尝试定义一个模式来初始化对象,然后在异步请求中使用回调。像这样:

function User() {
    var self = this;
    self.init = function(cb) { 
        FB.api(someurl, function (response) {
            self.id = response.id;
            if (cb) { 
               cb();
            }
        });
    }
}

然后

var user = new User();
user.init(function() { console.log(user.id); });