@@ -9,52 +9,45 @@ import {warn, when, isObject, isFunction, inBrowser} from '../../util';
9
9
10
10
export default function ( context ) {
11
11
12
- var reqHandlers = [ sendRequest ] , resHandlers = [ ] , handler ;
12
+ const reqHandlers = [ sendRequest ] , resHandlers = [ ] ;
13
13
14
14
if ( ! isObject ( context ) ) {
15
15
context = null ;
16
16
}
17
17
18
18
function Client ( request ) {
19
- return new Promise ( ( resolve , reject ) => {
19
+ while ( reqHandlers . length ) {
20
20
21
- function exec ( ) {
21
+ const handler = reqHandlers . pop ( ) ;
22
22
23
- handler = reqHandlers . pop ( ) ;
23
+ if ( isFunction ( handler ) ) {
24
24
25
- if ( isFunction ( handler ) ) {
26
- handler . call ( context , request , next ) ;
27
- } else {
28
- warn ( `Invalid interceptor of type ${ typeof handler } , must be a function` ) ;
29
- next ( ) ;
30
- }
31
- }
25
+ let response , next ;
32
26
33
- function next ( response ) {
27
+ response = handler . call ( context , request , val => next = val ) || next ;
34
28
35
- if ( isFunction ( response ) ) {
36
-
37
- resHandlers . unshift ( response ) ;
29
+ if ( isObject ( response ) ) {
30
+ return new Promise ( ( resolve , reject ) => {
38
31
39
- } else if ( isObject ( response ) ) {
32
+ resHandlers . forEach ( handler => {
33
+ response = when ( response , response => {
34
+ return handler . call ( context , response ) || response ;
35
+ } , reject ) ;
36
+ } ) ;
40
37
41
- resHandlers . forEach ( handler => {
42
- response = when ( response , response => {
43
- return handler . call ( context , response ) || response ;
44
- } , reject ) ;
45
- } ) ;
38
+ when ( response , resolve , reject ) ;
46
39
47
- when ( response , resolve , reject ) ;
40
+ } , context ) ;
41
+ }
48
42
49
- return ;
43
+ if ( isFunction ( response ) ) {
44
+ resHandlers . unshift ( response ) ;
50
45
}
51
46
52
- exec ( ) ;
47
+ } else {
48
+ warn ( `Invalid interceptor of type ${ typeof handler } , must be a function` ) ;
53
49
}
54
-
55
- exec ( ) ;
56
-
57
- } , context ) ;
50
+ }
58
51
}
59
52
60
53
Client . use = handler => {
@@ -66,7 +59,7 @@ export default function (context) {
66
59
67
60
function sendRequest ( request , resolve ) {
68
61
69
- var client = request . client || ( inBrowser ? xhrClient : nodeClient ) ;
62
+ const client = request . client || ( inBrowser ? xhrClient : nodeClient ) ;
70
63
71
64
resolve ( client ( request ) ) ;
72
65
}
0 commit comments