Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery加载JSON文件而不使用回调函数_Javascript_Jquery_Json - Fatal编程技术网

Javascript 使用jQuery加载JSON文件而不使用回调函数

Javascript 使用jQuery加载JSON文件而不使用回调函数,javascript,jquery,json,Javascript,Jquery,Json,我是javascript新手,很确定这是一个不确定的问题,但我就是搞不懂 在我的网站上,我有几个JSON文件,我几乎在任何地方都使用它们。如果我使用jQuery函数加载JSON文件,我需要向jQuery函数传递另一个实际使用JSON文件加载数据的回调函数。我无法执行下面的代码,因为它是一个回调函数: let数据; $.getJSON(“path/to/file.json”,函数(json_数据){ 数据=json_数据; }) console.log(数据);//未定义 我每秒多次加载一个JS

我是javascript新手,很确定这是一个不确定的问题,但我就是搞不懂

在我的网站上,我有几个JSON文件,我几乎在任何地方都使用它们。如果我使用jQuery函数加载JSON文件,我需要向jQuery函数传递另一个实际使用JSON文件加载数据的回调函数。我无法执行下面的代码,因为它是一个回调函数:

let数据;
$.getJSON(“path/to/file.json”,函数(json_数据){
数据=json_数据;
})
console.log(数据);//未定义
我每秒多次加载一个JSON文件,每次都再次加载,这太荒谬了。这是否意味着我需要将整个代码打包到这个回调函数中?有没有一种简单的方法可以在不使用回调函数的情况下将JSON文件数据保存在变量中


提前谢谢

考虑以下几点

function storeItem(i, d){
  localStorage.setItem(i, JSON.stringify(d));
}

function getItem(i){
  return JSON.parse(localstorage.getItem(i));
}

function init(){
  $.getJSON("path/to/file.json", function (json_data) {
    storeItem("data", json_data);
  });
}

init();
setTimeout(function(){
  console.log(getItem("data"));
}, 1000);

您可以使用
localStorage
在浏览器中存储文本。这将在初始化页面时收集所有JSON并存储。如果加载数据需要很长时间,可以调整设置的超时。这只是为了让AJAX调用时间得以完成。

为什么一秒钟需要多次?我使用JSON文件作为设置/配置文件。我没有在js文件中定义字典或数组,而是单独加载JSON文件!由于getJson是异步的,所以看起来更好、更容易阅读。在加载getJSON之后,您必须等待,只有您自己才应该加载getJSON!是否有办法等待异步命令执行@MayankGuptaYes和no。您可以使用async/wait删除回调,但是,这无助于您的“每秒多次”请求,这太荒谬了。如果您需要实时数据,请查看推送通知或长轮询。有没有不设置超时功能的解决方案?我想要的是等待JSON数据加载并保存,然后继续这个过程。您可以将所有步骤放入一个函数中,然后在加载数据后从AJAX回调中调用该函数。