forked from juzheng/sdu-course-bot
		
	perf:resetCookie加锁
This commit is contained in:
		| @@ -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) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user