gpt4 book ai didi

javascript - 使用 setTimeout() 检查 JSON 文件中的更改

转载 作者:行者123 更新时间:2023-11-27 23:28:42 25 4
gpt4 key购买 nike

我正在编写一个在浏览器中运行的应用程序。我每分钟都会从服务器加载一个包含当前数据的 json 文件,并且需要将这些数据与之前加载的 json 文件中的数据进行比较。如果有任何变化,我将在应用程序内动态显示新数据。

我使用了一个带有延迟的函数。 JSfiddle 中的示例。但是,我无法从延迟到下一个函数的函数中获取局部变量,在下一个函数中我可以比较数据。

我尝试过创建全局变量,尝试使用范围变量,甚至将值保存在存储中。没有什么对我有用。JSON 文件的输出是对象。

请问有什么帮助吗?JSfiddle:https://jsfiddle.net/vladoss/r02aLv60/2/

dataUpdates();
var ch1;

function dataUpdates() {
ch = (function() {
ch = null;
$.ajax({
'async': false,
'global': false,
'url': "json.json", //non-exisitng json.
'dataType': "json",
'success': function (data) {
ch = data;
}
});
return ch; //current data
})();

setTimeout(oldValues, 3000);
function oldValues() {
ch1 = ch[0]; //old data
}

if (ch1 !== ch[0]) { //Here I need be able to read variable ch1.
console.log(ch1); //ch1 is undefined
//...
}
}
setInterval(dataUpdates, 5000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

最佳答案

您可以比较两个 json 文件的校验和。为此,您可以使用 library 。代码结构可以简化为这样。

var curCh = null;

function dataUpdates() {
$.ajax({
'async': false,
'global': false,
'url': "json.json", //non-exisitng json.
'dataType': "json",
'success': function (data) {
var ch = checksum(data);

// Comparing checksums
if(curCh != ch) {
curCh = ch;

console.log('new json! do updates here!');
}
}
});
}

setInterval(dataUpdates, 5000);

关于javascript - 使用 setTimeout() 检查 JSON 文件中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34747626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com