[英]How to call a function when a variable changes in an API
我正在调用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')来查看值的变化。
只是一些小事情要开始:
将getJSON
移动到updateAPI
外部和上方。 现在,每次调用它时,它都会创建一个不需要的新函数。 您也可以只将其替换为fetch api 。 您还可以抽象check
函数,并使其接受一个(或两个)参数,并告诉您是否应更新。
其次,您是否尝试过调试呢? 使用console.log
语句还是Chrome调试器? 问题出在以下代码中:
var followers = data.followers_count
var old = followers;
followers
与old
永远平等。 每次调用函数时都要重新分配它们。 这就是为什么您看到它发生变化,但从未看到它记录任何内容的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.