我的项目中定义了一个休息服务,它将url和callback函数作为参数加入。
RestApiService
service.requestFromApi = function(url, cb) {
return service.request(config.ApiEndpoint.Base + url, cb);
};
service.request = function(url, cb) {
if(typeof cb !== 'function') {
throw new Error('Function expected');
}
$http.get(url).then(function(response) {
if (response.status === 200) {
if (typeof response.data === 'object') {
return cb(response.data);
}
}
}, function(response) {
$window.console.error('Requesting ' + url + ' from server failed (' + response.status + ' ' + response.statusText + ')');
});
};
我使用以下方法调用此服务:
service.watch = function () {
restApiService.requestFromApi('/crossing' + '?latitude=' + latestCoords.latitude + '&longitude=' + latestCoords.longitude + '&radius=' + config.radiusInMetres, updateHandler)
.finally(function() {
$timeout(service.watch, 5000);
});
};
var processData = function (item) {
crossing[item.crossingName] = item;
};
var updateHandler = function (json) {
if (json.events && Array.isArray(json.events)) {
json = json.events;
} else {
$log.warn('Smissing events field');
}
if (json.length > 0) {
angular.forEach(json, processData);
}
};
为了确保仅在上一个请求完成之后的下一个请求,我使用了finally块。但是我收到错误无法读取属性'最后'未定义。。我有一个提示,这是关于一些返回值,但我不确定问题的确切性质。