FB.api響應,這是我的代碼:無法獲得與JS類
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響應,這是我的代碼:無法獲得與JS類
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(someurl, function(response) {
console.log(response);
});
並在此發佈響應值。
FB.api是一個帶回調的異步函數。在您閱讀user.id
時,回調函數尚未被調用。
也許你應該移動異步初始化出構造,增加一個明確的「初始化」功能:
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);
});
好吧,那我該怎麼做?我只想存儲response.id和response.email,以便在不調用FB.login的情況下多次使用它們。 –
將它們存儲以備後用是很好的;您只需確保在加載之前不要訪問這些緩存的值。如果您儘快需要它們,請使用init回調。 –
是的。非常感謝。 –
嘗試定義,你初始化對象的模式,然後在異步請求使用回調。事情是這樣的:
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); });
一切都很好與響應。 {name:「some name」,email:「[email protected]」,id:123456789} –
so try: function User(){ var self = this; self.id = 123456; } var user = new User(); console.log(user.id); 你會得到什麼? –
123456.問題是獲取FB.api –