簡體   English   中英

API中的變量更改時如何調用函數

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

followersold 永遠平等。 每次調用函數時都要重新分配它們。 這就是為什么您看到它發生變化,但從未看到它記錄任何內容的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM