gpt4 book ai didi

javascript - jQuery/Javascript : variable NOT updating after GET call

转载 作者:行者123 更新时间:2023-12-01 03:51:15 25 4
gpt4 key购买 nike

我正在尝试从文本文件中读取并将其中的信息放入数组中。然而,我似乎做错了什么。

var Level = function(ctx) {
this.ctx = ctx;
this.lvlWidth = 0;
this.lvlHeight = 0;

this.map = [];


this.loadLevel = function(){
var start = 0;
var end = 0;
this.lvlHeight = 25;
this.lvlWidth = 21;

$.get("1.txt", function(data){
start = data.indexOf("0");
end = data.lastIndexOf("#");
this.map = data.slice(start, end - 2).split(" ");
}, "text");

console.log(this.map);
};
}; // end Level

在控制台上,它说我的变量 this.map 是一个空数组。它不会自行修改,我也不知道为什么。我检查了其他答案,人们说如果您不在函数外部声明变量(在我的情况下为映射),则会发生此问题,但您可以清楚地看到我这样做了。讽刺的是,this.lvlWidth 和 this.lvlHeight 分别更改为 21 和 25。谁能告诉我为什么 map 不更新?

这是 1.txt 的信息(与此文件位于同一文件夹中):

# startleveldata
0 0 0 0 0 0 0 0 0 113 21 113 0 0 0 0 0 0 0 0 0
0 107 100 100 100 100 100 100 100 106 0 105 100 100 100 100 100 100 100 108 0
0 101 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 101 0
0 101 3 120 2 113 2 111 100 108 2 107 100 112 2 113 2 120 3 101 0
0 101 2 2 2 101 2 2 2 101 2 101 2 2 2 101 2 2 2 101 0
0 101 2 111 100 106 2 113 2 110 2 110 2 113 2 105 100 112 2 101 0
0 101 2 2 2 2 2 101 2 2 2 2 2 101 2 2 2 2 2 101 0
0 101 2 120 2 111 100 130 100 112 2 111 100 130 100 112 2 120 2 101 0
0 101 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 101 0
0 105 100 108 2 113 2 111 100 100 100 100 100 112 2 113 2 107 100 106 0
0 0 0 101 2 101 2 2 0 0 10 0 0 2 2 101 2 101 0 0 0
111 100 100 106 2 105 112 2 107 112 1 111 108 2 111 106 2 105 100 100 112
20 0 0 0 2 0 0 2 101 11 12 13 101 2 0 0 2 0 0 0 20
111 133 100 112 2 111 112 2 105 100 100 100 106 2 111 112 2 111 100 133 112
0 101 2 2 2 0 0 2 0 0 0 0 0 2 0 0 2 2 2 101 0
0 101 2 120 2 107 112 2 111 100 100 100 112 2 111 108 2 120 2 101 0
0 101 2 2 2 101 2 2 0 0 4 0 0 2 2 101 2 2 2 101 0
0 105 133 112 2 110 2 111 100 100 133 100 100 112 2 110 2 111 133 106 0
0 0 101 2 2 2 2 2 2 2 101 2 2 2 2 2 2 2 101 0 0
0 0 101 2 111 112 2 111 108 2 101 2 107 112 2 111 112 2 101 0 0
107 100 106 2 2 2 2 2 101 2 101 2 101 2 2 2 2 2 105 100 108
101 2 2 2 111 100 112 2 110 2 110 2 110 2 111 100 112 2 2 2 101
101 3 120 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 120 3 101
101 2 2 2 107 100 100 100 100 108 0 107 100 100 100 100 108 2 2 2 101
105 100 100 100 106 0 0 0 0 110 21 110 0 0 0 0 105 100 100 100 106
# endleveldata

编辑:我让它工作了伙计们!问题是我需要调用一个回调函数来再次调用该函数。根据用户 @ACOMIT001 的建议,我在 $.get() 之后使用了 .then() 函数。我提取了 $get 函数,将其放在主程序中,然后在 .then() 函数上调用了 loadLevel(),它就可以工作了。我无法真正解释为什么,但这现在对我有用。谢谢大家的帮助/

最佳答案

$.get 是一个异步方法。它在被调用后立即返回,而不是等待服务器的响应。因此,为什么 this.map 将为空。

尝试这样的事情:

var that = this;

$.get("1.txt", function(data){
start = data.indexOf("0");
end = data.lastIndexOf("#");
that.map = data.slice(start, end - 2).split(" ");
}, "text").then(function () {
console.log(that.map);
});

正如之前的答案所述,其范围正在发生变化。

关于javascript - jQuery/Javascript : variable NOT updating after GET call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com