[英]AngularJs ng-repeat not rendering data yet http 200 response
[英]How repeat http call in AngularJS if response data is null and response status is 200
我正在使用一項服務,該服務將以數據的形式發送回XML。 通常,一切正常,但有時服務器會錯誤地發送沒有數據的空XML。
var isokLayer = $http({
method: 'GET',
url: URLs.GEOSERVER_ISOK
}).then(function(response) {
if (response.status == 200) {
do {
var formatter = new ol.format.WMTSCapabilities();
} while (response.data == null);
var datas = (formatter.read(response.data));
var options = ol.source.WMTS.optionsFromCapabilities(datas, {
layer: 'CIEN',
matrixSet: 'EPSG:2180',
});
var source = new ol.source.WMTS(options);
for (var z = 0; z < source.getTileGrid().getMatrixIds().length; ++z) {
source.getTileGrid().getOrigin(z).reverse();
}
var result = new ol.layer.Tile({
source: source,
visible: false,
xarisLayerType: 'baseLayer',
xarisLayerName: 'NMT LPIS',
xarisLayerSampleIcon: 'assets/styles/img/baseLayerSample/nmt.png',
zIndex: ConfigService.getBaseLayerZIndex()
});
map.addLayer(result);
layerList.push(result);
} else {
console.log(response.status);
}
}, function(err) {
console.log(err);
});
如果response.data為null,我如何在successCallback內重復http調用? 我嘗試在errorCallback中重復此操作,但是response.status始終為200,並且永遠不會執行錯誤功能。
這個代碼怎么樣?
$ q.reject方法允許您拒絕當前的承諾。 如果Promise被拒絕,則'then'方法的回調將停止,並執行catch回調。
var isokLayer = $http({
// ...
}).then(function(response) {
if (response.status == 200 && response.data) {
// ...
} else if (response.data == null) {
return $q.reject(response);
} else {
console.log(response.status)
}
}).catch(function(errResponse) {
console.log(errResponse);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.