请你帮我看看下面的代码吗?为什么我无法在回调之外获得价值?
任何意见都将不胜感激。
var i = 0;
var myModulesName = [];
me.store.load({callback: function(){
me.store.data.each(function(records) {
if(records.raw.hasLeaf === true){
//Ext.Function.defer(function() {
myModulesName[i] = records.raw.name;
console.log('this is constructor App.js inside storeload '+myModulesName[i]);
//}, 100, me);
++i;
}
});
}
});
//empty here.
console.log('this is constructor outside of load '+myModulesName);
答案 0 :(得分:0)
是的,它是空的,它将保持为空,因为store.load()
是异步的。请求被发送到服务器并立即继续执行。当服务器返回响应(可能需要几秒钟)时,将执行回调,如果请求成功,则会触发load事件。
答案 1 :(得分:-1)
这段代码位于构造函数中,我有另一个名为init()的函数,它将在构造函数之后触发。以下代码位于我的构造函数的末尾。
if (Ext.isReady) {
Ext.Function.defer(me.init, 10, me);
} else {
Ext.onReady(me.init, me);
}
我刚把这个部分移到了load()和每个'的末尾。部分,它的工作!我现在能够获得modulesName。