当我在函数中分配一个值时,全局变量不更新



我正在尝试使用jQuery在.txt文件中创建一个数组。阵列是游戏的答案列表。

控制台是第一次记录带有内容的数组,但第二次是一个空数组。为什么answers不在全球上更新?

这是我的代码:

//create global variable answers
var answers = new Array;
//assign a value to answers from text file
$.get("wordsEn.txt", function(txt){
    answers = txt.split('n');
    console.log(answers);
});
console.log(answers);

您需要调用一个函数,例如

的同步函数
    //create global variable answers
var answers = new Array;
var cb = function(){
    console.log(answers);
};
//assign a value to answers from text file
$.get("wordsEn.txt", function(txt){
    answers = txt.split('n');
    console.log(answers);
    if(cb)
        cb();
});

console.log(answers);在回调外发生

$.get立即返回,但它不一定立即运行。获取数据可能需要一段时间。同时,运行外部console.log(answers);

您对console.log有两个电话,所以一个问题是您不知道首先发生哪一个,因为一个是同步发生的,另一个是异步发生的。对于初学者,如果您这样进行调试,则应在日志语句中输入一些其他信息:

console.log('1: ' + answers);
console.log('2: ' + answers);

当您看到输出时,您会知道是否首先发生了2次,还是第一次发生。

就像其他人所说的那样,$.get代码中使用的内部功能异步发生,这意味着它将运行 ajax请求完成,这可能是快速或慢的,有时您没有办法知道。

相关内容

  • 没有找到相关文章

最新更新