javascript - 使用 p5.js,是否可以预加载一些在 .json 文件中定义的 .json 文件,而该文件本身是使用 preload() 函数预加载的?

标签 javascript json p5.js

我正在开发一个 p5.js 项目,该项目从 JSON 文件加载一些配置选项。我在 p5.js 的 preload() 函数中预加载配置文件,如下所示:

let config = {};

function preload() {
    config = loadJSON("data/config.json");
}

配置 JSON 文件的一部分包含一些 song 对象,每个对象都有一个 filename 属性,这是我想要预加载的另一个 JSON 文件:

"songs": [
    {
        "title": "Song One",
        "filename": "01.json"
    },
    ...
]

我无法在 p5.js 的 setup() 函数之前访问配置文件数据(因为我无法保证在此之前配置文件已被完全读取),此时我无法再预加载歌曲 JSON 文件。

我正在尝试找出是否有任何解决办法。

编辑:感谢下面乔治的回答,我的工作如下。以下所有内容在进入 p5.js 的 setup() 函数之前运行,这正是我所追求的:

let config = {};

function preload() {
    config = loadJSON("config.json", configLoaded);
}

function configLoaded(_config) {
    let songs_length = _config.album.songs.length;
    for (let i = 0; i < songs_length; i++) {
        loadJSON("data/" + _config.album.songs[i].filename, songLoaded);
    }
}

function songLoaded(_song) {
    console.log(_song);
}

最佳答案

您应该能够加载loadJSON()并设置数据加载或出错时的回调。

希望,如果一切都设置得井井有条,像这样简单的事情应该可以工作:

function preload() {
    config = loadJSON("data/config.json");
    loadJSON(config.songs[0].filename,songOneLoaded);
}

function songOneLoaded(data){
    console.log("song one data loaded",data);
}

注意我无法测试上述内容,但希望它可以帮助您指明正确的方向。我还会仔细检查要加载的 .json 文件的路径。理想情况下,您也应该始终处理错误情况。

关于javascript - 使用 p5.js,是否可以预加载一些在 .json 文件中定义的 .json 文件,而该文件本身是使用 preload() 函数预加载的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48751773/

相关文章:

javascript - p5.j​​s Prim 算法迷宫生成 : Stuck in Infinite Loop

javascript - jQuery UI Accordion Header 中的输入框

javascript - React JS:检查对象上的每个项目是否正确,然后添加图标

javascript - 在脚本标签中访问 Angular 变量

php - 如何在 slim 框架中将 http 响应状态添加到 rest api

json - 安全和无状态的 JWT 实现

javascript - 使用p5.js,当在draw内部使用函数时,如何让它只运行一次?

javascript - 如何使用JS使用更新值自动更新第二个文本框

javascript - 使用 PHP 和 JS,为什么我从 JSON 返回错误

javascript - 更改刻度位置 p5 javascript