@@ -6440,19 +6440,126 @@ https://github.com/Tencent/APIJSON/issues
6440
6440
const timeout = timeout_ != null ? timeout_ : this . timeout
6441
6441
const wait = wait_ != null ? wait_ : ( this . wait || 0 )
6442
6442
var retry = retry_ != null ? retry_ : ( this . retry || 0 )
6443
- var retryReq = function ( ) {
6444
- if ( retry == null || retry <= 0 ) {
6443
+
6444
+ const onHttpResponse = function ( res ) {
6445
+ App . currentHttpResponse = res
6446
+ clearTimeout ( errHandler )
6447
+ var postEvalResult = evalPostScript ( url , res , null )
6448
+ if ( postEvalResult == BREAK_ALL ) {
6449
+ return
6450
+ }
6451
+
6452
+ App . loadingCount --
6453
+ res = res || { }
6454
+
6455
+ if ( isDelegate ) {
6456
+ var hs = res . headers || { }
6457
+ var delegateId = hs [ 'Apijson-Delegate-Id' ] || hs [ 'apijson-delegate-id' ]
6458
+
6459
+ if ( delegateId != null ) {
6460
+ if ( isEnvCompare ) {
6461
+ if ( delegateId != App . otherEnvDelegateId ) {
6462
+ App . otherEnvDelegateId = delegateId
6463
+ App . saveCache ( App . server , 'otherEnvDelegateId' , delegateId )
6464
+ }
6465
+ } else {
6466
+ if ( delegateId != App . delegateId ) {
6467
+ App . delegateId = delegateId
6468
+ App . saveCache ( App . server , 'delegateId' , delegateId )
6469
+ }
6470
+ }
6471
+ }
6472
+ }
6473
+
6474
+ //any one of then callback throw error will cause it calls then(null)
6475
+ // if ((res.config || {}).method == 'options') {
6476
+ // return
6477
+ // }
6478
+ if ( DEBUG ) {
6479
+ log ( 'send >> success:\n' + JSON . stringify ( res . data , null , ' ' ) )
6480
+ }
6481
+
6482
+ //未登录,清空缓存
6483
+ if ( res . data != null && res . data . code == 407 ) {
6484
+ // alert('request res.data != null && res.data.code == 407 >> isAdminOperation = ' + isAdminOperation)
6485
+ if ( isAdminOperation ) {
6486
+ // alert('request App.User = {} App.server = ' + App.server)
6487
+
6488
+ App . clearUser ( )
6489
+ }
6490
+ else {
6491
+ // alert('request App.accounts[App.currentAccountIndex].isLoggedIn = false ')
6492
+ var account = App . accounts [ App . currentAccountIndex ]
6493
+ if ( account != null ) {
6494
+ account . isLoggedIn = false
6495
+ }
6496
+ }
6497
+ }
6498
+
6499
+ if ( postEvalResult == BREAK_LAST ) {
6500
+ return
6501
+ }
6502
+
6503
+ if ( callback != null ) {
6504
+ callback ( url , res , null )
6505
+ return
6506
+ }
6507
+ App . onResponse ( url , res , null )
6508
+ }
6509
+
6510
+ const onHttpCatch = function ( err ) {
6511
+ if ( retry != null && retry > 0 && retryReq ( err ) ) {
6512
+ return ;
6513
+ }
6514
+
6515
+ var errObj = err instanceof Array == false && err instanceof Object ? err : { }
6516
+ var res = { status : errObj . status || ( errObj . response || { } ) . status , request : { url : url , headers : header , data : req } , data : ( errObj . response || { } ) . data }
6517
+ App . currentHttpResponse = res
6518
+
6519
+ var postEvalResult = evalPostScript ( url , res , err )
6520
+ if ( postEvalResult == BREAK_ALL ) {
6521
+ return
6522
+ }
6523
+
6524
+ App . loadingCount --
6525
+
6526
+ log ( 'send >> error:\n' + err )
6527
+ if ( isAdminOperation ) {
6528
+ App . delegateId = null
6529
+ }
6530
+
6531
+ if ( postEvalResult == BREAK_LAST ) {
6532
+ return
6533
+ }
6534
+
6535
+ if ( callback != null ) {
6536
+ callback ( url , res , err )
6537
+ return
6538
+ }
6539
+
6540
+ if ( typeof App . autoTestCallback == 'function' ) {
6541
+ App . autoTestCallback ( 'Error when testing: ' + err + '.\nurl: ' + url + ' \nrequest: \n' + JSON . stringify ( req , null , ' ' ) , err )
6542
+ }
6543
+
6544
+ App . onResponse ( url , { request : { url : url , headers : header , data : req } } , err )
6545
+ }
6546
+
6547
+ var retryReq = function ( err ) {
6548
+ if ( retry == null || retry < 0 ) {
6549
+ onHttpCatch ( err )
6445
6550
return false
6446
6551
}
6447
6552
6448
6553
retry --
6449
6554
try {
6450
- sendRequest ( isAdminOperation , method , type , url , req , header , callback )
6555
+ setTimeout ( function ( ) {
6556
+ sendRequest ( isAdminOperation , method , type , url , req , header , callback )
6557
+ } , wait < 0 ? 0 : wait )
6451
6558
} catch ( e ) {
6452
6559
App . log ( 'request retryReq retry = ' + retry + ' >> try {\n' +
6453
6560
' sendRequest(isAdminOperation, method, type, url, req, header, callback)\n' +
6454
6561
' } catch (e) = ' + e . message )
6455
- return retryReq ( )
6562
+ return retryReq ( err )
6456
6563
}
6457
6564
6458
6565
return true
@@ -6511,107 +6618,8 @@ https://github.com/Tencent/APIJSON/issues
6511
6618
// crossDomain: true
6512
6619
timeout : timeout
6513
6620
} )
6514
- . then ( function ( res ) {
6515
- App . currentHttpResponse = res
6516
- clearTimeout ( errHandler )
6517
- var postEvalResult = evalPostScript ( url , res , null )
6518
- if ( postEvalResult == BREAK_ALL ) {
6519
- return
6520
- }
6521
-
6522
- App . loadingCount --
6523
- res = res || { }
6524
-
6525
- if ( isDelegate ) {
6526
- var hs = res . headers || { }
6527
- var delegateId = hs [ 'Apijson-Delegate-Id' ] || hs [ 'apijson-delegate-id' ]
6528
-
6529
- if ( delegateId != null ) {
6530
- if ( isEnvCompare ) {
6531
- if ( delegateId != App . otherEnvDelegateId ) {
6532
- App . otherEnvDelegateId = delegateId
6533
- App . saveCache ( App . server , 'otherEnvDelegateId' , delegateId )
6534
- }
6535
- } else {
6536
- if ( delegateId != App . delegateId ) {
6537
- App . delegateId = delegateId
6538
- App . saveCache ( App . server , 'delegateId' , delegateId )
6539
- }
6540
- }
6541
- }
6542
- }
6543
-
6544
- //any one of then callback throw error will cause it calls then(null)
6545
- // if ((res.config || {}).method == 'options') {
6546
- // return
6547
- // }
6548
- if ( DEBUG ) {
6549
- log ( 'send >> success:\n' + JSON . stringify ( res . data , null , ' ' ) )
6550
- }
6551
-
6552
- //未登录,清空缓存
6553
- if ( res . data != null && res . data . code == 407 ) {
6554
- // alert('request res.data != null && res.data.code == 407 >> isAdminOperation = ' + isAdminOperation)
6555
- if ( isAdminOperation ) {
6556
- // alert('request App.User = {} App.server = ' + App.server)
6557
-
6558
- App . clearUser ( )
6559
- }
6560
- else {
6561
- // alert('request App.accounts[App.currentAccountIndex].isLoggedIn = false ')
6562
- var account = App . accounts [ App . currentAccountIndex ]
6563
- if ( account != null ) {
6564
- account . isLoggedIn = false
6565
- }
6566
- }
6567
- }
6568
-
6569
- if ( postEvalResult == BREAK_LAST ) {
6570
- return
6571
- }
6572
-
6573
- if ( callback != null ) {
6574
- callback ( url , res , null )
6575
- return
6576
- }
6577
- App . onResponse ( url , res , null )
6578
- } )
6579
- . catch ( function ( err ) {
6580
- if ( retryReq ( ) ) {
6581
- return ;
6582
- }
6583
-
6584
- var errObj = err instanceof Array == false && err instanceof Object ? err : { }
6585
- var res = { status : errObj . status || ( errObj . response || { } ) . status , request : { url : url , headers : header , data : req } , data : ( errObj . response || { } ) . data }
6586
- App . currentHttpResponse = res
6587
-
6588
- var postEvalResult = evalPostScript ( url , res , err )
6589
- if ( postEvalResult == BREAK_ALL ) {
6590
- return
6591
- }
6592
-
6593
- App . loadingCount --
6594
-
6595
- log ( 'send >> error:\n' + err )
6596
- if ( isAdminOperation ) {
6597
- App . delegateId = null
6598
- }
6599
-
6600
- if ( postEvalResult == BREAK_LAST ) {
6601
- return
6602
- }
6603
-
6604
- if ( callback != null ) {
6605
- callback ( url , res , err )
6606
- return
6607
- }
6608
-
6609
- if ( typeof App . autoTestCallback == 'function' ) {
6610
- App . autoTestCallback ( 'Error when testing: ' + err + '.\nurl: ' + url + ' \nrequest: \n' + JSON . stringify ( req , null , ' ' ) , err )
6611
- }
6612
-
6613
- App . onResponse ( url , { request : { url : url , headers : header , data : req } } , err )
6614
- } )
6621
+ . then ( onHttpResponse )
6622
+ . catch ( onHttpCatch )
6615
6623
}
6616
6624
6617
6625
var evalScript = isAdminOperation || caseScript_ == null ? function ( ) { } : function ( isPre , code , res , err ) {
@@ -6803,9 +6811,7 @@ https://github.com/Tencent/APIJSON/issues
6803
6811
return
6804
6812
}
6805
6813
6806
- setTimeout ( function ( ) {
6807
- sendRequest ( isAdminOperation , method , type , url , req , header , callback )
6808
- } , wait < 0 ? 0 : wait )
6814
+ retryReq ( )
6809
6815
} ,
6810
6816
6811
6817
0 commit comments