为什么我无法填充我的Array对象?
if (typeof response == "object") {
store = new dojo.data.ItemFileReadStore({
data : response
});
console.warn("Loaded to Store");
var itemArray = new Array();
var completed = function(items) {
for(var i = 0; i < items.length; i++) {
console.log(store.getValue(items[i],"itemlabel"));
itemArray.push(store.getValue(items[i]));
}
};
var error = function() {
console.log("Error in fetching data from Store");
};
store.fetch({onComplete: completed, onError: error});
console.warn("Item count"+ itemArray.length);
所以我的项目计数给出始终为0,但为什么我无法填充我的Array对象?
console.log(store.getValue(items[i],"itemlabel"));
在回调方法上得到打印的价值。
所以,如果我想填充我的itemArray
我该怎么办?
因为completed
将被异步调用,所以在数组填充completed
函数中的任何数据之前,您正在打印itemArray.length
。
如果要打印itemArray
的实际长度,应在completed
的for循环之后执行。
那么如何处理呢? – BOSS 2012-02-08 13:33:19
我增加了我的答案。如果我的回答不令人满意,请提供更多背景信息,以说明您正在尝试做什么。 – FishBasketGordo 2012-02-08 13:34:29
我希望该数组被填充,以便稍后可以使用它。 – BOSS 2012-02-08 13:35:05
您好回答您的问题是很容易的,但首先我会使用推荐
var completed = function(items) {
dojo.forEach(items, function(item) {
console.log(store.getValue(items[i],"itemlabel"));
itemArray.push(store.getValue(items[i]));
}, this);
proceedToNextStep(itemArray);
};
,然后创建将用于保持对过程一旦itemArray加载功能..
proceedToNextStep: function(itemArray){
// whatever you need to do
},
您也可以使用dojo.publish/dojo.subscribe
作为一个侧面说明,你不应该使用'新的Array()',而不是仅仅使用'[]'符号:'VAR itemArray = [];' – Joe 2012-02-08 13:26:58