如何在JavaScript中同步加载JSON?
我正试图建立一个HTML5游戏,但我遇到了一个问题。我正在尝试设计游戏,使它可以模块化;我的方法是使用一个JSON文件来加载不同的模块 我试过的代码如何在JavaScript中同步加载JSON?,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,我正试图建立一个HTML5游戏,但我遇到了一个问题。我正在尝试设计游戏,使它可以模块化;我的方法是使用一个JSON文件来加载不同的模块 我试过的代码 var resources = {}; $.ajaxSetup({ async: false }); $.getJSON('res/gen/generators.json', function (data) { resources.generators = data; }); for (let generator in resourc
var resources = {};
$.ajaxSetup({
async: false
});
$.getJSON('res/gen/generators.json', function (data) {
resources.generators = data;
});
for (let generator in resources.generators) {
$.getScript("res/gen/" + resources.generators[generator].folder + "/script.js");
}
$.ajaxSetup({
async: true
});
JSON文件
{
"memoryless": {
"folder": "memoryless",
"name": "Memoryless",
"description": "Generates a piece with no regard to the previous history."
}
}
不幸的是,我收到一个错误,上面说“[Deprecation]主线程上的同步XMLHttpRequest已被弃用,因为它会对最终用户的体验造成有害影响。有关更多帮助,请检查。”,但我不希望在加载这些代码之前运行任何其他代码。我该怎么办?与JavaScript的异步特性作斗争将导致“不好”的开发体验。接受异步性 在这里,我们开始嵌套承诺和回调:
var resources = {};
$.getJSON('res/gen/generators.json', function (data) {
resources.generators = data;
$.when(Object.keys(resources.generators).map(function(generator) {
return $.getScript("res/gen/" + resources.generators[generator].folder + "/script.js");
}).then(function() {
...do other stuff
})
});
或者,您可以使用:
作为另一种选择,您可以放弃定制模块系统,使用标准:
与JavaScript的异步特性作斗争将导致“不好”的开发体验。接受异步性 在这里,我们开始嵌套承诺和回调:
var resources = {};
$.getJSON('res/gen/generators.json', function (data) {
resources.generators = data;
$.when(Object.keys(resources.generators).map(function(generator) {
return $.getScript("res/gen/" + resources.generators[generator].folder + "/script.js");
}).then(function() {
...do other stuff
})
});
或者,您可以使用:
作为另一种选择,您可以放弃定制模块系统,使用标准:
将他们放在回调中学习如何处理AJAX中的第一个A代表什么。。。异步的。。。顺便说一句,您得到的不是错误,而是警告,因此您的代码可以按您希望的方式工作。下一步要学习的是在没有jQuery的情况下执行此操作。将它们放入回调学习如何处理AJAX中的第一个a代表什么。。。异步的。。。顺便说一下,您得到的不是一个错误,而是一个警告,因此您的代码可以按照您希望的方式工作。接下来要学习的是在不使用jQuery的情况下执行此操作。
import memoryless from "res/gen/memoryless/script.js"