簡體   English   中英

如果響應數據為空且響應狀態為200,如何在AngularJS中重復http調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM