我正在尝试创建一个服务来轮询 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/