javascript - Angularjs 轮询 API 检查 JSON 中的空数组

标签 javascript arrays json angularjs

我正在尝试创建一个服务来轮询 API 并检查响应是否有空数组。如果是这样,我希望它每秒继续检查,直到响应的数组被填满。例如,如果数组为空,JSON 将返回:

{
choices: [ ]
}

为了进行设置,我像这样创建了服务。问题是 data.response.choices.length 似乎未定义,我不确定如何检查数组是否为空。其余代码似乎工作正常。有想法吗?

angular.module('help')

  .factory('Poller', function($http, $timeout) {
    var data = { response: {}, calls: 0 };
    var poller = function() {
      if (data.response.choices.length === 0) {
        $http.get('menu.json').then(function(r) {
          data.response = r.data;
          data.calls++;
          $timeout(poller, 1000);
        });
        console.log('success');
      } else {
        $http.get('menu.json').then(function(r) {
          data.response = r.data;
        });
        console.log('damnit');
      }
    };
    poller();

    return {
      data: data
    };
  });

最佳答案

data.response 设置为空对象,因此第一次调用 poller 时,data.response.choices 保证未定义

我认为代码可以简化为这样......

angular.module('help')

  .factory('Poller', function($http, $timeout) {
    var data = { response: {}, calls: 0 };
    var poller = function() {
      $http.get('menu.json').then(function(r) {
        data.response = r.data;
        data.calls++;
        if (r.data.choices.length === 0) {
          $timeout(poller, 1000);
        }
      });
    };
    poller();

    return {
      data: data
    };
  });

关于javascript - Angularjs 轮询 API 检查 JSON 中的空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596475/

相关文章:

javascript - 播放嵌入式 youtube 视频 JS

javascript - 加号在 Google Apps Script + MySQL 中转换为空格

c - double 到 char* 无需任何外部方法

c - 当 0xFF 在 char 数组中时,它与下一个 char 一起被读取为整数

algorithm - 一个元素太大的数组/队列的含义和含义是什么?

javascript - 如何使用 Chrome 扩展修改网站元素

json - 在 VB.net 中将 JSON 字符串反序列化为动态列表

javascript - 使用 Javascript 构建动态 JSON 结构

javascript - 确定使用 jQuery 加载哪个 css

javascript - 实习生:在 Promise.<Array.<leadfoot/Element>> 上循环