@@ -586,7 +586,7 @@ function $HttpProvider() {
586
586
*
587
587
* ### Overriding the Default Transformations Per Request
588
588
*
589
- * If you wish override the request/response transformations only for a single request then provide
589
+ * If you wish to override the request/response transformations only for a single request then provide
590
590
* `transformRequest` and/or `transformResponse` properties on the configuration object passed
591
591
* into `$http`.
592
592
*
@@ -959,25 +959,23 @@ function $HttpProvider() {
959
959
config . paramSerializer = isString ( config . paramSerializer ) ?
960
960
$injector . get ( config . paramSerializer ) : config . paramSerializer ;
961
961
962
- var chain = [ serverRequest , undefined ] ;
962
+ var requestInterceptors = [ ] ;
963
+ var responseInterceptors = [ ] ;
963
964
var promise = $q . when ( config ) ;
964
965
965
966
// apply interceptors
966
967
forEach ( reversedInterceptors , function ( interceptor ) {
967
968
if ( interceptor . request || interceptor . requestError ) {
968
- chain . unshift ( interceptor . request , interceptor . requestError ) ;
969
+ requestInterceptors . unshift ( interceptor . request , interceptor . requestError ) ;
969
970
}
970
971
if ( interceptor . response || interceptor . responseError ) {
971
- chain . push ( interceptor . response , interceptor . responseError ) ;
972
+ responseInterceptors . push ( interceptor . response , interceptor . responseError ) ;
972
973
}
973
974
} ) ;
974
975
975
- while ( chain . length ) {
976
- var thenFn = chain . shift ( ) ;
977
- var rejectFn = chain . shift ( ) ;
978
-
979
- promise = promise . then ( thenFn , rejectFn ) ;
980
- }
976
+ promise = chainInterceptors ( promise , requestInterceptors ) ;
977
+ promise = promise . then ( serverRequest ) ;
978
+ promise = chainInterceptors ( promise , responseInterceptors ) ;
981
979
982
980
if ( useLegacyPromise ) {
983
981
promise . success = function ( fn ) {
@@ -1004,6 +1002,20 @@ function $HttpProvider() {
1004
1002
1005
1003
return promise ;
1006
1004
1005
+
1006
+ function chainInterceptors ( promise , interceptors ) {
1007
+ for ( var i = 0 , ii = interceptors . length ; i < ii ; ) {
1008
+ var thenFn = interceptors [ i ++ ] ;
1009
+ var rejectFn = interceptors [ i ++ ] ;
1010
+
1011
+ promise = promise . then ( thenFn , rejectFn ) ;
1012
+ }
1013
+
1014
+ interceptors . length = 0 ;
1015
+
1016
+ return promise ;
1017
+ }
1018
+
1007
1019
function executeHeaderFns ( headers , config ) {
1008
1020
var headerContent , processedHeaders = { } ;
1009
1021
0 commit comments