这是我的代码:
function User() {
var self = this;
FB.api(someurl, function (response) {
self.id = response.id;
});
}
我无法得到这样的ID:
var user = new User();
console.log(user.id);
答案 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); });