From cf6ca31aa41c33e33ea5279f08535a8aebbbb4f7 Mon Sep 17 00:00:00 2001 From: xion Date: Sun, 6 Apr 2025 21:35:29 +0800 Subject: [PATCH] query add cacel request --- package.json | 2 +- src/query-browser.ts | 4 ++-- src/query.ts | 44 ++++++++++++++++++++++++++++++++------------ 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 5b187eb..60287e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@kevisual/query", - "version": "0.0.16", + "version": "0.0.17", "main": "dist/index.js", "module": "dist/index.js", "types": "dist/index.d.ts", diff --git a/src/query-browser.ts b/src/query-browser.ts index 7e1a6b7..6f95dab 100644 --- a/src/query-browser.ts +++ b/src/query-browser.ts @@ -1,9 +1,9 @@ import { adapter } from './adapter.ts'; import { QueryWs, QueryWsOpts } from './ws.ts'; import { Query } from './query.ts'; -import { BaseQuery } from './query.ts'; +import { BaseQuery, wrapperError } from './query.ts'; -export { QueryOpts, QueryWs, Query, QueryWsOpts, adapter, BaseQuery }; +export { QueryOpts, QueryWs, Query, QueryWsOpts, adapter, BaseQuery, wrapperError }; export type { DataOpts, Result, Data } from './query.ts'; diff --git a/src/query.ts b/src/query.ts index 1d613c5..23cb1ef 100644 --- a/src/query.ts +++ b/src/query.ts @@ -10,7 +10,7 @@ export type Fn = (opts: { body?: Record; [key: string]: any; timeout?: number; -}) => Promise>; +}) => Promise | false>; export type QueryOpts = { url?: string; @@ -66,6 +66,18 @@ export const setBaseResponse = (res: Result) => { } }; }; +export const wrapperError = ({ code, message }: { code?: number; message?: string }) => { + const result = { + code: code || 500, + success: false, + message: message || 'api request error', + showError: (fn?: () => void) => { + // + }, + noMsg: true, + }; + return result; +}; /** * const query = new Query(); * const res = await query.post({ @@ -137,16 +149,24 @@ export class Query { }; try { if (_beforeRequest) { - await _beforeRequest(req); + const res = await _beforeRequest(req); + if (res === false) { + return wrapperError({ + code: 500, + message: 'request is cancel', + // @ts-ignore + req: req, + }); + } } } catch (e) { console.error('request beforeFn error', e, req); - return { + return wrapperError({ code: 500, - success: false, message: 'api request beforeFn error', - showError: () => {}, - }; + // @ts-ignore + req: req, + }); } if (this.stop) { const that = this; @@ -177,13 +197,13 @@ export class Query { return res; } catch (e) { - console.error('request error', e, req); - return { + console.error('request afterFn error', e, req); + return wrapperError({ code: 500, - success: false, message: 'api request afterFn error', - showError: () => {}, - }; + // @ts-ignore + req: req, + }); } }); } @@ -205,7 +225,7 @@ export class Query { export { adapter }; -export class BaseQuery { +export class BaseQuery { query: T; constructor({ query }: { query: T }) { this.query = query;