繁体   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