考虑下面的“推送”场景。
(global) var refs = [] ;
var record = {id:1, references: ["12","145"]};
refs.push(record);然而,当我使用Chrome进行调试时,push函数被跳过,并且refs数组最后为空。原因何在?
编辑:
完整的代码如下所示:
gadgets.sciverse.makeRequest(entry['prism:url'], function(obj) {
var testJson = $.xml2json(obj['text']);
// console.log(testJson);
var tempArr = [];
if (!testJson) {
console.log('empty secondary response');
return ;
}
var refSet = testJson ['item']['bibrecord']['tail']['bibliography']['reference'];
if (!refSet)
tempArr = [] ;
else {
$.each(refSet, function(i, e){
tempArr.push(e['ref_info']['refd_itemidlist']['itemid']['text']);
})
}
var verySillyTemp = {
id: pid,
arr: tempArr
} ;
refs.push( verySillyTemp );
},params);
console.log(refs);发布于 2011-08-13 06:23:17
看起来refs是在异步调用中设置的,而您在设置它之前记录了它。
发布于 2011-08-13 06:10:34
考虑在性能关键的循环和函数中对函数调用使用替代原语操作。
您可以使用以下方法。
record[record.length] = id;这只是一个虚拟的例子,你可以通过你的记录数组运行for循环。
基元操作可以比函数调用更快。
发布于 2011-08-13 06:08:39
语法错误:
var record = {id:1, references: ["12","145"]};https://stackoverflow.com/questions/7046839
复制相似问题