全局数组在javascript函数中没有被修改

时间:2017-08-23 16:42:47

标签: javascript global-variables

我在这个问题上花了太多时间......所以我想声明一个名为"位置"的二维数组。可用于其他功能。使用在函数" 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));
            }
    })
}

1 个答案:

答案 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();
        }
   })
}