我正在尝试将json文件的内容加载到数组中。我没有使用回调函数来确保在使用之前加载文件,而是将其编码为:
var f_file_loaded = false;
var data = null;
$.getJSON('transformation.json', function(dt){
f_file_loaded = true;
data = dt;
});
while(!f_file_loaded){
// Loop until file is loaded
}
console.log('data loaded', data);
然而,这会阻止浏览器,并且f_file_loaded似乎不会在任何时候出现。我的代码有什么问题?
答案 0 :(得分:0)
while(!f_file_loaded){
无法正常工作......它只会创建一个无限循环。
您需要使用promise()
界面。
$.when($.getJSON()).done(function() {
// file is loaded, execute whatever code
});
答案 1 :(得分:0)
那是因为$ .getJSON是一个异步调用。
你应该按照这些方针做点什么:
function data_loaded(data) {
console.log('data loaded', data);
}
$.getJSON('transformation.json', function(dt){
data_loaded(dt);
});
答案 2 :(得分:0)
如果你想同步而不是异步调用,那么使用这个
上面的代码
$.ajax("transformation.json", {
dataType:'json',
async:false,
success:function(dt) {
data = dt;
}
});
下面的代码将在下载数据后继续执行