我正在调用API并定期更新对象变量。 在updateAPI函数中,我要检查变量是否增加以及是否要调用函数。
我尝试了setter和getter,存储和其他方法。在当前代码的不同变体中也玩了很多,但我无法理解其他解决方案。
function updateAPI() {
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
callback(null, xhr.response);
} else {
callback(status);
}
};
xhr.send();
};
getJSON('api.example.com', function(err, response) {
if (err != null) {
console.error(err);
} else {
let data = response.data
var followers = data.followers_count
var old = followers;
function check() {
if (old > followers) {
console.log('changed');
var old = followers;
}
if (old < followers) {
console.log('not changed');
var old = followers;
}
}
setInterval(check, 5000);
}
});
}
updateAPI();
setInterval(() => { updateAPI() }, 10000);
当前代码不会记录API发生的任何更改。但是我可以使用console.log('followers')来查看值的变化。
答案 0 :(得分:0)
一些小事情要开始:
将getJSON
移到updateAPI
的上方和上方。现在,每次调用它时,它都会创建一个不需要的新函数。同样,您也可以将其替换为fetch api。您还可以抽象check
函数,并使其接受一个(或两个)参数,并告诉您是否应更新。
第二次尝试调试该怎么做?使用console.log
语句还是Chrome调试器?问题出在以下代码中:
var followers = data.followers_count
var old = followers;
followers
和old
总是相等。每次调用函数时都要重新分配它们。这就是为什么您看到它发生了变化,却从未看到它记录任何东西的原因。