Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 存储json或js对象是否更有效_Javascript_Json_Fetch - Fatal编程技术网

Javascript 存储json或js对象是否更有效

Javascript 存储json或js对象是否更有效,javascript,json,fetch,Javascript,Json,Fetch,我正在按需获取json数据集(在运行时)。为了不获取同一个集合两次,我决定将已经下载的集合保存在js对象中。将集合存储为json并在需要时对其进行解析或保存解析后的对象会更有效吗 以下是两种方法: 进近A: const alreadyLoaded={}; 异步函数f(集合){ if(alreadyLoaded[set]!==未定义)返回alreadyLoaded[set];//更改 让jsonRes=wait-fetch(“example.+set+.json”); 让obRes=wait re

我正在按需获取json数据集(在运行时)。为了不获取同一个集合两次,我决定将已经下载的集合保存在js对象中。将集合存储为json并在需要时对其进行解析或保存解析后的对象会更有效吗

以下是两种方法:

进近
A

const alreadyLoaded={};
异步函数f(集合){
if(alreadyLoaded[set]!==未定义)返回alreadyLoaded[set];//更改
让jsonRes=wait-fetch(“example.+set+.json”);
让obRes=wait res.json();
alreadyLoaded[set]=obRes;//更改
return obRes;//更改
}
f(“一”);
f(“两名”);
f(“一”);
进近
B

const alreadyLoaded={};
异步函数f(集合){
if(alreadyLoaded[set]!==undefined)返回等待alreadyLoaded[set].json();//更改
让jsonRes=wait-fetch(“example.+set+.json”);
让obRes=wait res.json();
alreadyLoaded[set]=jsonRes;//更改
返回obRes.json();//更改
}
f(“一”);
f(“两名”);
f(“一”);

由于只能调用
.json()
一次,因此
方法实际上不起作用。以后不可能再使用它。

这种
方法实际上不起作用,因为您只能调用
.json()
一次。以后不可能再使用它。

您需要缓存最终结果,而不是中间结果。i、 例如,如果您使用
B
,那么您正在缓存一个需要调用
json()
的资源(它创建了最终对象,因此您不在这里缓存最终对象)。如果使用
A
,则缓存的是最终对象,假设这是您将重用的最终形式,而不是每次都对其调用函数(在这种情况下,您应该再次缓存该函数的结果)

缓存通常可以发生在任何级别,但您感兴趣的是哪种方式更有效(不是内存方式,而是处理方式)。然后答案是,在流中缓存的时间越晚越好

如果效率是指内存消耗,那么您需要测量每个对象,并确定哪一个更轻。这通常是一种折衷。

您需要缓存最终结果,而不是中间结果。i、 例如,如果您使用
B
,那么您正在缓存一个需要调用
json()
的资源(它创建了最终对象,因此您不在这里缓存最终对象)。如果使用
A
,则缓存的是最终对象,假设这是您将重用的最终形式,而不是每次都对其调用函数(在这种情况下,您应该再次缓存该函数的结果)

缓存通常可以发生在任何级别,但您感兴趣的是哪种方式更有效(不是内存方式,而是处理方式)。然后答案是,在流中缓存的时间越晚越好


如果效率是指内存消耗,那么您需要测量每个对象,并确定哪一个更轻。这通常是一种折衷。

我完全不了解您的方法的实现方式。您可能做了一些解释,或者该函数看起来很奇怪。您可以使用缓存头来控制它。@DanyalImran OP似乎在问存储字符串或JavaScript对象是否更有效。我完全不知道您的方法的实现方式。您可能做了一些解释,或者该函数看起来很奇怪。您可以使用缓存头来控制它。@DanyalImran OP似乎在询问存储字符串或JavaScript对象是否更有效。