@@ -959,26 +959,25 @@ function $HttpProvider() {
959
959
config . paramSerializer = isString ( config . paramSerializer ) ?
960
960
$injector . get ( config . paramSerializer ) : config . paramSerializer ;
961
961
962
- var chain = [ serverRequest , undefined ] ;
963
- var promise = initiateOutstandingRequest ( config ) ;
962
+ $browser . $$incOutstandingRequestCount ( ) ;
963
+
964
+ var requestInterceptors = [ ] ;
965
+ var responseInterceptors = [ ] ;
966
+ var promise = $q . when ( config ) ;
964
967
965
968
// apply interceptors
966
969
forEach ( reversedInterceptors , function ( interceptor ) {
967
970
if ( interceptor . request || interceptor . requestError ) {
968
- chain . unshift ( interceptor . request , interceptor . requestError ) ;
971
+ requestInterceptors . unshift ( interceptor . request , interceptor . requestError ) ;
969
972
}
970
973
if ( interceptor . response || interceptor . responseError ) {
971
- chain . push ( interceptor . response , interceptor . responseError ) ;
974
+ responseInterceptors . push ( interceptor . response , interceptor . responseError ) ;
972
975
}
973
976
} ) ;
974
977
975
- while ( chain . length ) {
976
- var thenFn = chain . shift ( ) ;
977
- var rejectFn = chain . shift ( ) ;
978
-
979
- promise = promise . then ( thenFn , rejectFn ) ;
980
- }
981
-
978
+ promise = chainInterceptors ( promise , requestInterceptors ) ;
979
+ promise = promise . then ( serverRequest ) ;
980
+ promise = chainInterceptors ( promise , responseInterceptors ) ;
982
981
promise . finally ( completeOutstandingRequest ) ;
983
982
984
983
if ( useLegacyPromise ) {
@@ -1006,9 +1005,18 @@ function $HttpProvider() {
1006
1005
1007
1006
return promise ;
1008
1007
1009
- function initiateOutstandingRequest ( config ) {
1010
- $browser . $$incOutstandingRequestCount ( ) ;
1011
- return $q . when ( config ) ;
1008
+
1009
+ function chainInterceptors ( promise , interceptors ) {
1010
+ for ( var i = 0 , ii = interceptors . length ; i < ii ; ) {
1011
+ var thenFn = interceptors [ i ++ ] ;
1012
+ var rejectFn = interceptors [ i ++ ] ;
1013
+
1014
+ promise = promise . then ( thenFn , rejectFn ) ;
1015
+ }
1016
+
1017
+ interceptors . length = 0 ;
1018
+
1019
+ return promise ;
1012
1020
}
1013
1021
1014
1022
function completeOutstandingRequest ( ) {
0 commit comments