Порядок вызова функций javascript

У меня есть три функции в JavaScript, parsing, init а также animate, Parsing должен быть вызван первым, потому что без него positions массив не изменен, что функция init необходимо. Как ни странно, живой нуждается в controls переменная, созданная init но раньше их вызывали одновременно, и раньше это работало. Я пробовал все возможные комбинации вызова функций, но либо controls не определено или positions является. Это последняя итерация моего кода.

var positions = [];
parsing();

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));
            }
        init();
        animate();
    })
}
...
function init() {
    renderer = new THREE.WebGLRenderer({antialias:true});
    renderer.setSize(WIDTH, HEIGHT);
    document.body.appendChild(renderer.domElement);
    ...
    console.log(positions);
    for (var i = 0; i < 256; i++) {
        atom = sphere.clone();
        atom.position.set( positions[0][i].x, positions[0][i].y, positions[0][i].z );
        scene.add( atom );
        group.push( atom );
    }
    ...
    controls = new THREE.OrbitControls(camera, renderer.domElement);    
}

function animate() {
     requestAnimationFrame(animate);
     renderer.render(scene, camera);
     controls.update();
}

Так же console.log(positions) показывает не пустой массив, но отображается ошибка positions не определено У кого-нибудь есть идея, почему?

0 ответов

Другие вопросы по тегам