用js类无法获得FB.api响应

时间:2016-02-10 10:16:09

标签: javascript facebook

这是我的代码:

function User() {
    var self = this;

    FB.api(someurl, function (response) {

        self.id = response.id;

    });
}

我无法得到这样的ID:

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

尝试

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

并在此处发布响应值。

答案 2 :(得分:0)

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

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