@@ -6440,19 +6440,126 @@ https://github.com/Tencent/APIJSON/issues
64406440 const timeout = timeout_ != null ? timeout_ : this . timeout
64416441 const wait = wait_ != null ? wait_ : ( this . wait || 0 )
64426442 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 )
64456550 return false
64466551 }
64476552
64486553 retry --
64496554 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 )
64516558 } catch ( e ) {
64526559 App . log ( 'request retryReq retry = ' + retry + ' >> try {\n' +
64536560 ' sendRequest(isAdminOperation, method, type, url, req, header, callback)\n' +
64546561 ' } catch (e) = ' + e . message )
6455- return retryReq ( )
6562+ return retryReq ( err )
64566563 }
64576564
64586565 return true
@@ -6511,107 +6618,8 @@ https://github.com/Tencent/APIJSON/issues
65116618 // crossDomain: true
65126619 timeout : timeout
65136620 } )
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 )
66156623 }
66166624
66176625 var evalScript = isAdminOperation || caseScript_ == null ? function ( ) { } : function ( isPre , code , res , err ) {
@@ -6803,9 +6811,7 @@ https://github.com/Tencent/APIJSON/issues
68036811 return
68046812 }
68056813
6806- setTimeout ( function ( ) {
6807- sendRequest ( isAdminOperation , method , type , url , req , header , callback )
6808- } , wait < 0 ? 0 : wait )
6814+ retryReq ( )
68096815 } ,
68106816
68116817
0 commit comments