javascript数组引用和回调函数

时间:2016-04-05 08:08:59

标签: javascript arrays reference callback

我不明白的东西我发现解释的时间很长,所以请耐心等待。我的页面中有以下内容:

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()回调已经被执行,所以应该修改数组本身。所有数组都是参考...

有什么建议吗?我通常不会问问题,因为大部分时间我通过搜索找到答案,但我已经尝试了一天。也许我缺乏灵感。一些帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

array指的是一个空数组,但在ajax回调中你有result = data.form.records;,它将一个新数组赋给result,而不是更新{{1}引用的数组这就是为什么即使在控制台记录array数组的正确值之后,也会引用初始的空数组。

result