我试图创建一个轮询API的服务,并检查响应是否有空的arrary。如果是这样,我希望它每隔一秒检查一次,直到响应中的数组被填满。对于instace,如果数组为空,则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
};
});
答案 0 :(得分:1)
data.response
设置为空对象,因此第一次调用poller
时,data.response.choices
保证为undefined
。
我认为代码可以简化为......
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
};
});
答案 1 :(得分:0)
您可以使用:
<!-- Image Gallery -->
<div class="gallery" ng-show="product.images.length">