我遇到了在回調中設置值的問題。我最初撥打電話獲取Quest數據,然後在任務數據返回後致電game.state.setNPCs
。無法獲得在回調中設置的值
我想在設置好NPC對象之後,但即使setNPCs()
似乎在設置數組,但get仍返回一個空數組。
您可以在下面看到,在callback
後面設置result.npcs
,我註銷了getNPCs()
,它是一個空陣列。
更奇怪的是,在設置了值之後,我從GameState
對象中調用game.state.getNPCs()
,但它仍然是一個空數組。
編輯:我發現,如果我在game.state.getNPCs
傳遞作爲一個回調到初始回調setNPCs()
,就像這樣:
callback(result.npcs, game.state.getNPCs);
那麼這個工程...但我不希望有傳在另一個回調。見下文。
與game.state.setNPCs
回調初始呼叫:
Utilities.game.quest.getQuestData({ id : stat.quest_id }, game.state.setNPCs);
電話getQuestData:
getQuestData : function (params, setNPCcallback) {
API.Quest.getQuestData(params).done(function (result) {
if (game.state) {
game.state.setQuest(result); //Object received successfully
setNPCcallback(result.npcs, game.state.getNPCs);
console.log('NPCs', game.state.getNPCs()); //Empty array
}
});
},
遊戲狀態對象:
var GameState = function(args) {
this.npcs = [];
...
};
GameState.prototype = {
constructor : GameState,
getNPCs : function() {
console.log(this.npcs); //Empty array
return this.npcs;
},
setNPCs : function (npcsArray, getNPCcallback) {
this.npcs = npcsArray;
console.log(this.npcs); //Contains Object
console.log(game.state.getNPCs()); //Empty array
console.log(getNPCcallback()); //Contains Object
},
你在哪裏調用'setNPCs' ..? –
@TJ在最初的'getQuestData'中,我傳入一個回調'Utilities.game.quest.getQuestData({id:stat.quest_id},game.state.setNPCs);'。查看帖子頂部 – Growler
@TJ也見上面編輯。如果我將'game.state.getNPCs'作爲回調函數傳入'game.state.setNPCs',它就會起作用......但是這看起來很糟糕,我想知道爲什麼我不能在'setNPCs'之後獲取值被稱爲。這不像它從服務器上再次獲取數據。 – Growler