一个vue项目,定时每5分钟请求一下接口,返回数据,如何判断当下请求出来的数据和上次5分钟前请求的数据是否一样?怎样编写判断代码?
时间: 2023-04-02 21:04:41 浏览: 51
可以通过对比两次请求返回的数据是否相同来判断数据是否一样。具体的判断代码可以使用 JavaScript 的深度比较函数 deepEqual() 来实现。在每次请求数据后,将返回的数据存储在一个变量中,然后使用 deepEqual() 函数比较当前数据和上次存储的数据是否相同,如果相同则表示数据没有变化,否则表示数据发生了变化。以下是示例代码:
```
let lastData = null;
function fetchData() {
// 发送请求获取数据
// ...
// 比较数据是否一样
if (lastData && deepEqual(lastData, newData)) {
console.log('数据没有变化');
} else {
console.log('数据发生了变化');
lastData = newData;
}
}
function deepEqual(a, b) {
if (a === b) {
return true;
}
if (typeof a !== typeof b || typeof a !== 'object' || a === null || b === null) {
return false;
}
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) {
return false;
}
for (const key of keysA) {
if (!keysB.includes(key) || !deepEqual(a[key], b[key])) {
return false;
}
}
return true;
}
```