正在中止 Angular 中未决的 http 请求而不是中止

Aborting pending http request in Angular not aborting

我正在尝试在 Angular 触发新请求时中止 $https 请求。但是,该请求在 Chrome 的开发工具中似乎仍处于待处理状态。我做错了什么吗?

allMarkersRequest.abort() 在 allMarkersRequest 不为空时被触发。所以 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;
    });
}

我没有在请求中包含超时参数

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;
    });
}