В jQuery я сравниваю два объекта. Один глобальный, а другой - локальные объекты. Если оба не совпадают, то я хочу обновить интерфейс, иначе нет. Я сравниваю эти два через каждые 3 секунды. Данные в объекте поступают из файла, записанного программой прошивки с неизвестным интервалом.
В обычном случае (сначала запускается программа прошивки, а затем я открываю окно пользовательского интерфейса), я сравнил эти две и получил результат, который яхочу, проверено хорошо. Проблема возникает, когда пользовательский интерфейс уже открыт в Chrome, а затем я запускаю / перезапускаю программу прошивки. Его каждый раз дает "не то же самое". Я вручную менял, оба одинаковы.
var prev_status = $(); //global object
function load_ui(){
//some code here
}
function ReadFile(){
//some ajax code
}
function WriteFile(){
//some ajax code
}
setInterval(function(){
ReadFile(devPublishedUrl, function(status){
console.log(prev_status, status); //local object: status
if (JSON.stringify(prev_status) === JSON.stringify(status)){
console.log('same');
}
else{
console.log('not same');
load_ui();
for(var index in status){
prev_status[index] = status[index];
}
}
});
}, 3000);
Что здесь не так? Я не хочу обновлять пользовательский интерфейс каждые 3 секунды без изменений. Данные в локальном объекте приведены ниже.
{
"schedule":0,
"sys":[
0,
0,
0
],
"temp":[
106,
32,
33,
1645,
30,
33,
1642,
33,
30,
104,
33
],
"end":[
0,
0
],
"fault":[
0,
0
],
"ssb":[
0,
0
],
"sse":[
0,
0
],
"fuel":[
158,
193
],
"temp_th":[
120,
98
]
}