From bec27b29e6f88293df2a0dee9c9ebf96d6db1dc9 Mon Sep 17 00:00:00 2001 From: zthxxx Date: Fri, 8 Sep 2023 13:24:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=90=9C=E7=B4=A2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E5=85=B3=E9=97=AD=E8=BF=9E=E6=8E=A5=E6=97=B6?= =?UTF-8?q?=E4=BC=9A=E8=A7=A6=E5=8F=91=20error=20=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E5=89=8D=E7=AB=AF=E9=9C=80=E8=A6=81=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E8=B0=83=E7=94=A8=20close=20=E4=B8=8D=E5=86=8D=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E9=87=8D=E8=BF=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webui/src/api/search.ts | 2 ++ webui/src/store/search.ts | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/webui/src/api/search.ts b/webui/src/api/search.ts index 9837c222..a3828534 100644 --- a/webui/src/api/search.ts +++ b/webui/src/api/search.ts @@ -27,6 +27,8 @@ export const apiSearch = { eventSource.onerror = ev => { console.error('[/search/bangumi] Server Error |', { keyword }, 'error:', ev) + // 目前后端搜索完成关闭连接时会触发 error 事件,前端手动调用 close 不再自动重连 + eventSource.close(); }; return () => { diff --git a/webui/src/store/search.ts b/webui/src/store/search.ts index 1551bd2d..e809ab3e 100644 --- a/webui/src/store/search.ts +++ b/webui/src/store/search.ts @@ -1,8 +1,8 @@ import {ref} from 'vue'; import { + EMPTY, Subject, debounceTime, - filter, switchMap, tap, } from "rxjs"; @@ -39,18 +39,18 @@ export function useSearchStore() { const bangumiInfo$ = input$.pipe( debounceTime(600), - tap(() => { + // switchMap 把输入 keyword 查询为 bangumiInfo$ 流,多次输入自动取消并停止前一次查询 + switchMap((input: string) => { // 有输入更新后清理之前的搜索结果 bangumiList.value = []; + return input + ? apiSearch.get(input, provider.value) + : EMPTY }), - filter(Boolean), - // switchMap 把输入 keyword 查询为 bangumiInfo$ 流,多次输入自动取消并停止前一次查询 - switchMap((input: string) => apiSearch.get(input, provider.value)), tap((bangumi: BangumiRule) => { bangumiList.value.push(bangumi); }), - ) - .subscribe() + ).subscribe() function onSearch() { input$.next(inputValue.value);