Javascript 如何在preload stage Phaser.js中使用Papa parse解析csv,而不是异步解析?

Javascript 如何在preload stage Phaser.js中使用Papa parse解析csv,而不是异步解析?,javascript,csv,phaser-framework,papaparse,Javascript,Csv,Phaser Framework,Papaparse,我用Phaser.js开发游戏 现在我需要在游戏开始之前解析csv文件,并使用Papa解析。 csv文件包含Phaser中预加载阶段的图像url 我试着这样做: function preload() { Papa.parse("http://localhost:9000/bad_images.csv", { download: true, complete: function(results) { i = 1;

我用Phaser.js开发游戏

现在我需要在游戏开始之前解析csv文件,并使用Papa解析。 csv文件包含Phaser中预加载阶段的图像url

我试着这样做:

function preload() {
    Papa.parse("http://localhost:9000/bad_images.csv", {
        download: true,
        complete: function(results) {
            i = 1;
            results.data.forEach(function(entry){
                bad_images.append(entry);
                bad_names.append("b" + i++);
            })
        }
    });

    Papa.parse("http://localhost:9000/good_images.csv", {
        download: true,
        complete: function(results) {
            i = 1;
            results.data.forEach(function(entry){
                good_images.append(entry);
                good_names.append("b" + i++);
            })
        }
    });

    for (var i = 0; i < good_images.length; ++i) {
        game.load.image(good_names[i], good_images[i]);
    }

    for (var i = 0; i < bad_images.length; ++i) {
        game.load.image(bad_names[i], bad_images[i]);
    }
}
函数预加载(){
爸爸解析(“http://localhost:9000/bad_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
错误的图片。追加(条目);
错误的名称。附加(“b”+i++);
})
}
});
爸爸解析(“http://localhost:9000/good_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
好的图片。附加(条目);
好名字。附加(“b”+i++);
})
}
});
对于(变量i=0;i
但在这种情况下,函数预加载在papa解析csv之前结束,导致它异步。
如何使所有函数按顺序而不是异步执行?

为什么需要同步

试试这个:

function loadCSV(){
    Papa.parse("http://localhost:9000/bad_images.csv", {
        download: true,
        complete: function(results) {
            i = 1;
            results.data.forEach(function(entry){
                bad_images.append(entry);
                bad_names.append("b" + i++);
            });

            Papa.parse("http://localhost:9000/good_images.csv", {
                download: true,
                complete: function(results) {
                    i = 1;

                    results.data.forEach(function(entry){
                        good_images.append(entry);
                        good_names.append("b" + i++);
                    });

                    startGame(); // Start the game when the load is finished

                }
            });
         }
    });
}

function startGame(){ .... }


function preload() {
    for (var i = 0; i < good_images.length; ++i) {
        game.load.image(good_names[i], good_images[i]);
    }

    for (var i = 0; i < bad_images.length; ++i) {
        game.load.image(bad_names[i], bad_images[i]);
    }          
}
函数loadCSV(){
爸爸解析(“http://localhost:9000/bad_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
错误的图片。追加(条目);
错误的名称。附加(“b”+i++);
});
爸爸解析(“http://localhost:9000/good_images.csv", {
下载:对,
完成:功能(结果){
i=1;
results.data.forEach(函数(条目){
好的图片。附加(条目);
好名字。附加(“b”+i++);
});
startGame();//加载完成后开始游戏
}
});
}
});
}
函数startName(){….}
函数预加载(){
对于(变量i=0;i
它需要同步,因为在phaser.js中,游戏在预加载功能后开始。如果imeges没有加载,它实际上对游戏不好。因此,您必须在预加载函数之前解析csv,然后启动游戏并加载游戏中的所有图像preload@StopKran同步下载将锁定您的浏览器页面。坦率地说,现代浏览器不允许同步XMLHttpRequest,正因为如此。唯一的方法是异步执行。