perf:resetCookie加锁

This commit is contained in:
juzeon 2022-01-04 17:34:57 +08:00
父節點 5884aadc13
當前提交 a0ef04285e

查看文件

@ -80,8 +80,8 @@ export async function acquireCourse(course: IJsonCourse, channel: TChannel): Pro
return true return true
} else { } else {
logAndNotifyUser(resp.data.message) logAndNotifyUser(resp.data.message)
if(resp.data.message.includes('当前账号已在别处登录')){ if (resp.data.message.includes('当前账号已在别处登录')) {
await resetCookie() await resetCookie()// TODO 加锁、优化
} }
return false return false
} }
@ -97,7 +97,7 @@ export async function exitCourse(course: IJsonCourse): Promise<boolean> {
return true return true
} else { } else {
logAndNotifyUser('[exitCourse]退课失败:' + resp.data.message) logAndNotifyUser('[exitCourse]退课失败:' + resp.data.message)
if(resp.data.message.includes('当前账号已在别处登录')){ if (resp.data.message.includes('当前账号已在别处登录')) {
await resetCookie() await resetCookie()
} }
return false return false
@ -108,7 +108,15 @@ export async function exitCourse(course: IJsonCourse): Promise<boolean> {
} }
} }
let resetCookieLock = false
export async function resetCookie() { export async function resetCookie() {
if (resetCookieLock) {
console.log('resetCookie 已被锁定')
return
}
resetCookieLock = true
try {
let cookieJar = new tough.CookieJar() let cookieJar = new tough.CookieJar()
let cookieAxios = axios.create({ let cookieAxios = axios.create({
headers: { headers: {
@ -144,6 +152,11 @@ export async function resetCookie() {
console.log('[cookie]取得Cookie:' + cookieString) console.log('[cookie]取得Cookie:' + cookieString)
appConfig.cookie = cookieString appConfig.cookie = cookieString
sduAxios.defaults.headers['Cookie'] = cookieString sduAxios.defaults.headers['Cookie'] = cookieString
} catch (e) {
throw e
} finally {
resetCookieLock = false
}
} }
export function countStr(str: string, word: string) { export function countStr(str: string, word: string) {