@@ -947,6 +947,7 @@ function $HttpProvider() {
947
947
throw minErr ( '$http' ) ( 'badreq' , 'Http request configuration url must be a string. Received: {0}' , requestConfig . url ) ;
948
948
}
949
949
950
+
950
951
var config = extend ( {
951
952
method : 'get' ,
952
953
transformRequest : defaults . transformRequest ,
@@ -959,26 +960,25 @@ function $HttpProvider() {
959
960
config . paramSerializer = isString ( config . paramSerializer ) ?
960
961
$injector . get ( config . paramSerializer ) : config . paramSerializer ;
961
962
962
- var chain = [ serverRequest , undefined ] ;
963
- var promise = initiateOutstandingRequest ( config ) ;
963
+ $browser . $$incOutstandingRequestCount ( ) ;
964
+
965
+ var requestInterceptors = [ ] ;
966
+ var responseInterceptors = [ ] ;
967
+ var promise = $q . when ( config ) ;
964
968
965
969
// apply interceptors
966
970
forEach ( reversedInterceptors , function ( interceptor ) {
967
971
if ( interceptor . request || interceptor . requestError ) {
968
- chain . unshift ( interceptor . request , interceptor . requestError ) ;
972
+ requestInterceptors . unshift ( interceptor . request , interceptor . requestError ) ;
969
973
}
970
974
if ( interceptor . response || interceptor . responseError ) {
971
- chain . push ( interceptor . response , interceptor . responseError ) ;
975
+ responseInterceptors . push ( interceptor . response , interceptor . responseError ) ;
972
976
}
973
977
} ) ;
974
978
975
- while ( chain . length ) {
976
- var thenFn = chain . shift ( ) ;
977
- var rejectFn = chain . shift ( ) ;
978
-
979
- promise = promise . then ( thenFn , rejectFn ) ;
980
- }
981
-
979
+ promise = chainInterceptors ( promise , requestInterceptors ) ;
980
+ promise = promise . then ( serverRequest ) ;
981
+ promise = chainInterceptors ( promise , responseInterceptors ) ;
982
982
promise . finally ( completeOutstandingRequest ) ;
983
983
984
984
if ( useLegacyPromise ) {
@@ -1006,9 +1006,18 @@ function $HttpProvider() {
1006
1006
1007
1007
return promise ;
1008
1008
1009
- function initiateOutstandingRequest ( config ) {
1010
- $browser . $$incOutstandingRequestCount ( ) ;
1011
- return $q . when ( config ) ;
1009
+
1010
+ function chainInterceptors ( promise , interceptors ) {
1011
+ for ( var i = 0 , ii = interceptors . length ; i < ii ; ) {
1012
+ var thenFn = interceptors [ i ++ ] ;
1013
+ var rejectFn = interceptors [ i ++ ] ;
1014
+
1015
+ promise = promise . then ( thenFn , rejectFn ) ;
1016
+ }
1017
+
1018
+ interceptors . length = 0 ;
1019
+
1020
+ return promise ;
1012
1021
}
1013
1022
1014
1023
function completeOutstandingRequest ( ) {
0 commit comments