全局数组不';无法在javascript函数中进行修改
我在这个问题上花了太多时间。。。所以我想声明一个名为“positions”的2D数组,它可以在其他函数中使用。使用函数“init”中的解析代码,我尝试创建一个名为“parsing”的简单函数,以避免每次使用positions数组时重复冗长的解析过程。除了在其他函数中输入console.log(positions)时,它总是返回一个空数组=[]。 为什么在解析函数中“positions”没有被修改?我该怎么做?这是使用的代码:全局数组不';无法在javascript函数中进行修改,javascript,global-variables,Javascript,Global Variables,我在这个问题上花了太多时间。。。所以我想声明一个名为“positions”的2D数组,它可以在其他函数中使用。使用函数“init”中的解析代码,我尝试创建一个名为“parsing”的简单函数,以避免每次使用positions数组时重复冗长的解析过程。除了在其他函数中输入console.log(positions)时,它总是返回一个空数组=[]。 为什么在解析函数中“positions”没有被修改?我该怎么做?这是使用的代码: var positions = []; parsing(); ini
var positions = [];
parsing();
init();
function parsing() {
fetch('Petit_film_256_atomes.txt').then(response => response.text()).then(text => {
const arr = text.split('\n')
.map(line => line.trim())
.map((arr) => arr.split(' '))
.map(([size, x, y, z]) => ({
size: Number(size),
x: Number(x),
y: Number(y),
z: Number(z)
}));
while (arr.length > 0) {
positions.push(arr.splice(0, size).slice(2));
}
})
}
我没有仔细研究在所有
.map
调用期间发生的事情,但问题可能是解析
在调用init
时还没有完成。您可以这样尝试:
var positions = [];
parsing(init);
function parsing(cb) {
fetch('Petit_film_256_atomes.txt').then(response => response.text()).then(text => {
const arr = text.split('\n')
.map(line => line.trim())
.map((arr) => arr.split(' '))
.map(([size, x, y, z]) => ({
size: Number(size),
x: Number(x),
y: Number(y),
z: Number(z)
}));
while (arr.length > 0) {
positions.push(arr.splice(0, size).slice(2));
}
if (typeof(cb) === 'function') {
cb();
}
})
}
因为您有一个异步调用,并且表现为ti是同步的。只需将
init
调用放在中,然后也放在回调中。不要接受回调。使用你的承诺,并回报它<代码>解析()。然后(初始化)