我不明白的东西我发现解释的时间很长,所以请耐心等待。我的页面中有以下内容:
je.getJsonArray("data")
然后从页面我进行以下调用(假设some_url有效)
var include = (function(){
var exports = {}
var test = function(url){
var result = [];
$.ajax(url).then(function(data){
result = data.form.records; // assume data.form.records valid
console.log(result) // displays correctly Array [Object,Object]
});
return result;
}
exports.test = test;
return exports
})();
稍后我有一个事件(点击一些按钮)将使用数组中的值
var array = include.test(some_url);
我的问题是,当事件发生时,数组变量仍然是VOID, console.log // 2显示Array [] ....
我知道我的测试函数立即返回所以数组变量的立即值是Array [],但是当调用input.click时,then()回调已经被执行,所以应该修改数组本身。所有数组都是参考...
有什么建议吗?我通常不会问问题,因为大部分时间我通过搜索找到答案,但我已经尝试了一天。也许我缺乏灵感。一些帮助将不胜感激
答案 0 :(得分:0)
array
指的是一个空数组,但在ajax回调中你有result = data.form.records;
,它将一个新数组赋给result
,而不是更新{{1}引用的数组这就是为什么即使在控制台记录array
数组的正确值之后,也会引用初始的空数组。
result