我在这个问题上花了太多时间......所以我想声明一个名为"位置"的二维数组。可用于其他功能。使用在函数" init"中工作的解析代码,我试图创建一个名为"解析"的简单函数。为了避免每次我想使用位置数组时重复长解析过程。除了我在其他函数中的console.log(position)时,它总是返回一个空数组= []。 怎么来"位置"在解析函数中没有被修改,我该怎么做?这是使用的代码:
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));
}
})
}
答案 0 :(得分:-1)
我没有密切关注所有.map
次调用过程中发生的事情,但问题可能是parsing
在调用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();
}
})
}