0
これは、同じURLの前のリクエストの取り消しを処理するhttpインターセプタサービスです。私は、角度データサービスの 'キャッチ'ハンドラに該当する '解決'メソッドを呼び出した後、拒否を処理する際に問題があります。 このキャンセルを意図的にフラグを立てる方法、私のデータサービスはサーバー側でエラーが発生したことを示していませんか?私はこの場合エラーメッセージを表示したくありません。同じURLを使用した意図的なhttpリクエストのAPIリクエストのキャンセル
(function() {
'use strict';
angular
.module('common')
.factory('abortService', abortService);
abortService.$inject = ['$q', '$filter'];
function abortService($q, $filter) {
var service = {
request: request,
};
var error = "";
var currentRequests = [];
return service;
function request(request) {
if (!request.url.includes('api/')) return request;
var deferred = $q.defer();
request.timeout = deferred.promise;
var existingRequests = $filter('filter')(currentRequests, { url: request.url }, true);
existingRequests.forEach(function (request) {
request.promiseObj.resolve('intentional_reject');//how to flag as intentional reject??
});
currentRequests.push({ url: request.url, promiseObj: deferred });
return request;
}
};})();
そして、ここでは私の角度データサービスメソッドです:
function getBalanceDueSummary(businessPartnerCode) {
return $http({
method: "get",
url: "/api/BusinessPartnerAPI/GetBalanceDueSummary",
params:
{
businessPartnerCode: businessPartnerCode,
}
})
.then(complete)
.catch(failed);
function complete(response) {
return response.data;
}
function failed(error) { //here my cancellation falls into, but i have no data which indicates intentional cancellation
//logService.exception displays a toastr message when error occurrs
logService.exception(error, 'GetBalanceDueSummary');
return $q.reject(error);
}
}
私はいくつかの掘削を行い、オブジェクトに値 'intentional_reject' を発見した
キャンセルのカスタムステータスコードを使用してこれを確認しましたか? http://stackoverflow.com/questions/29356962/angular-js-set-http-status-code-for-cancelled-requests – stackg91
私はそれを今試みました。カスタムステータスコードを受け入れることができませんでした。ステータスが常に-1になります。 – vpetrovic