t-comm
Version:
专业、稳定、纯粹的工具库
29 lines (28 loc) • 1.27 kB
TypeScript
import type { IRequestInterceptor, IResponseInterceptor, IDecorator, IRawRequest } from './types';
export interface INetworkEngineOptions {
requestInterceptors: IRequestInterceptor[];
responseInterceptors: IResponseInterceptor[];
decorator?: IDecorator;
}
/**
* 网络调度引擎
*
* 职责:把"请求拦截器 → doRequest → 响应拦截器 → decorator"串起来,
* 对外暴露一个符合 `NetworkManager.setRequestImpl` 签名的函数。
*
* 调度链:
* 1. 顺序跑 requestInterceptors(任一返回 abort=true 即中止)
* 2. 调 doRequest(wx.request / fetch)
* 3. 顺序跑 responseInterceptors(任一返回 abort=true 即走失败)
* 4. 成功:resolve param.data(通常由 GetDataInterceptor 填好)
* 失败:reject param.data(同上)
* 5. decorator 包裹整个 Promise,做 r=100000 重试等横切逻辑
*/
export declare class NetworkEngine {
options: INetworkEngineOptions;
constructor(options: INetworkEngineOptions);
/** 对外暴露的请求函数:一次完整的 request 调用 */
request: (cfg: IRawRequest) => Promise<any>;
/** 不含 decorator 的单次请求主链(供 decorator 重试时调用) */
runCore: (cfg: IRawRequest) => Promise<any>;
}