Skip to content

Commit d803219

Browse files
committed
APIAuto: 解决有时重试过程报错没有 callback
1 parent de391e8 commit d803219

File tree

1 file changed

+114
-108
lines changed
  • APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/js

1 file changed

+114
-108
lines changed

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static/js/main.js

Lines changed: 114 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)