else if (errorCode == '1000') {
let params = {
authType: 0,
userTicket: userTicket
}
api.login(params).then(res => {
if (res.code === '00000') {
Cookies.set('token', res.data.accessToken);
Cookies.set('refreshToken', res.data.refreshToken);
sessionStorage.setItem('token', res.data.accessToken)
resolve(res.data)
} else if (res.code === '20201') {
Cookies.remove('token')
Cookies.remove('refreshToken')
sessionStorage.removeItem('token')
window.kickout_native(0, 1, res.msg);
reject(res.msg)
} else {
Cookies.remove('token')
Cookies.remove('refreshToken')
sessionStorage.removeItem('token')
showToast(res.code, res.msg)
}
})
}
这段代码是一个条件分支,通常出现在JavaScript的异步处理流程中,特别是在处理登录逻辑时。它使用了else if
语句来检查一个错误码errorCode
,并对特定错误码执行一系列操作。以下是逐行解释:
-
else if (errorCode == '1000') { ... }
:- 这是一个
else if
条件语句,它检查变量errorCode
的值是否等于字符串'1000'
。如果是,将执行大括号{}
内的代码块。
- 这是一个
-
let params = { authType: 0, userTicket: userTicket }
:- 声明一个局部变量
params
,它是一个对象,包含两个属性:authType
和userTicket
。userTicket
变量的值在这个代码片段中没有给出,但它可能是之前某个地方获取的用户票据。
- 声明一个局部变量
-
api.login(params).then(res => { ... })
:- 调用
api.login
函数,它可能是一个异步API调用,用于处理登录逻辑。params
对象作为参数传递给这个函数。 .then(res => { ... })
是api.login
返回的Promise对象的then
方法,它用于指定当Promise解决(fulfill)时执行的回调函数。res
是回调函数的参数,代表API调用的响应。
- 调用
-
if (res.code === '00000') { ... }
:- 在
.then
的回调函数中,首先检查响应对象res
的code
属性是否等于'00000'
,这通常表示操作成功。
- 在
-
Cookies.set('token', res.data.accessToken);
:- 如果登录成功,则使用
Cookies.set
方法设置一个名为'token'
的cookie,其值为响应数据中的accessToken
。
- 如果登录成功,则使用
-
Cookies.set('refreshToken', res.data.refreshToken);
:- 设置另一个名为
'refreshToken'
的cookie,其值为响应数据中的refreshToken
。
- 设置另一个名为
-
sessionStorage.setItem('token', res.data.accessToken)
:- 在会话存储(sessionStorage)中设置一个名为
'token'
的项,其值为accessToken
。
- 在会话存储(sessionStorage)中设置一个名为
-
resolve(res.data)
:- 如果以上步骤都成功执行,使用
resolve
函数解决(resolve)一个Promise,通常这是在处理异步操作时使用的,res.data
作为解决的值。
- 如果以上步骤都成功执行,使用
-
else if (res.code === '20201') { ... }
:- 如果响应的
code
是'20201'
,执行另一个代码块。这可能表示一种特定的错误情况。
- 如果响应的
-
Cookies.remove('token')
和Cookies.remove('refreshToken')
:- 如果遇到错误
'20201'
,则移除之前设置的'token'
和'refreshToken'
cookie。
- 如果遇到错误
-
sessionStorage.removeItem('token')
:- 从会话存储中移除
'token'
项。
- 从会话存储中移除
-
window.kickout_native(0, 1, res.msg);
:- 调用
window.kickout_native
,这可能是一个特定平台或框架提供的原生方法,用于处理用户被登出的情况。res.msg
可能包含错误信息。
- 调用
-
reject(res.msg)
:- 使用
reject
函数拒绝(reject)一个Promise,通常这是在处理异步操作时使用的,res.msg
作为拒绝的原因。
- 使用
-
else { ... }
:- 如果以上条件都不满足,执行另一个代码块。
-
showToast(res.code, res.msg)
:- 调用
showToast
函数,可能是用于显示一个提示信息给用户,res.code
和res.msg
分别作为提示信息的代码和消息内容。
- 调用
这段代码整体上是在处理登录过程中可能遇到的不同情况,并根据API响应进行相应的操作,如设置或移除cookies和会话存储项,显示提示信息,或者调用原生方法。