中止Angular中挂起的http请求未中止

Aborting pending http request in Angular not aborting

本文关键字:请求 http Angular 挂起 中止      更新时间:2023-09-26

当触发新请求时,我正试图中止Angular中的$https请求。然而,该请求在Chrome的开发工具中似乎仍处于挂起状态。我在这里做错什么了吗?

allMarkersRequest.abort()在allMarkersRequest不为null时被激发。因此,调用了deferredAbort.resolve(),但程序最终仍然通过.then().

var allMarkersRequest = null;
function getAllMarkersForSearch() {
    if (allMarkersRequest) {
        allMarkersRequest.abort();
        console.log('Aborting all markers request');
    }
    var deferredAbort = $q.defer();
    var url = Routing.generate('ajax_search_geo_all_markers');
    var req = $http({
        method: 'POST',
        url: url
    });
    allMarkersRequest = req.then(function (data) {
        createMarkers(data.data);
        $rootScope.$broadcast('map:markers:updated', markers);
    }, function (error) {
        // Display error message
    });
    allMarkersRequest.abort = function() {
        deferredAbort.resolve();
    };
    allMarkersRequest.finally(function () {
        allMarkersRequest.abort = angular.noop;
        deferredAbort = req = allMarkersRequest = null;
    });
}

我没有在请求中包含timout参数

var allMarkersRequest=null;

function getAllMarkersForSearch() {
    if (allMarkersRequest) {
        allMarkersRequest.abort();
        console.log('Aborting all markers request');
    }
    var deferredAbort = $q.defer();
    var url = Routing.generate('ajax_search_geo_all_markers');
    var req = $http({
        method: 'POST',
        url: url,
        timeout: deferredAbort
    });
    allMarkersRequest = req.then(function (data) {
        createMarkers(data.data);
        $rootScope.$broadcast('map:markers:updated', markers);
    }, function (error) {
        // Display error message
    });
    allMarkersRequest.abort = function() {
        deferredAbort.resolve();
    };
    allMarkersRequest.finally(function () {
        allMarkersRequest.abort = angular.noop;
        deferredAbort = req = allMarkersRequest = null;
    });
}