[英]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.