olympus-r
Version:
一个力求简单易用的前端开发框架 #### 开发语言 TypeScript #### 核心架构 MVC #### 模块间通讯和解耦 采用事件机制,利用一个全局唯一的事件派发器进行模块间通讯,解耦模块间依赖 #### 表现层结构 使用桥接模式拆分接口与实现,达到一套核心驱动多套表现层的目的(目前支持DOM、Egret、PixiJS三种表现层),同时支持表现层的未来可扩展性 #### TypeScript装饰器注入 框架提供TypeScript装饰器注入功能,便捷获取托管对象。例如:
78 lines (77 loc) • 3.52 kB
TypeScript
import IObservable from "../../core/observable/IObservable";
import RequestData from "./RequestData";
import ResponseData, { IResponseDataConstructor } from "./ResponseData";
/**
* @author Raykid
* @email initial_r@qq.com
* @create date 2017-09-12
* @modify date 2017-09-12
*
* 网络管理器
*/
export interface ResponseHandler {
(response: ResponseData | Error, request?: RequestData): void;
}
export default class NetManager {
constructor();
private onMsgDispatched;
private _responseDict;
/**
* 注册一个返回结构体
*
* @param {IResponseDataConstructor} cls 返回结构体构造器
* @memberof NetManager
*/
registerResponse(cls: IResponseDataConstructor): void;
private _responseListeners;
/**
* 添加一个通讯返回监听
*
* @param {(IResponseDataConstructor|string)} clsOrType 要监听的返回结构构造器或者类型字符串
* @param {ResponseHandler} handler 回调函数
* @param {*} [thisArg] this指向
* @param {boolean} [once=false] 是否一次性监听
* @param {IObservable} [observable] 要发送到的内核
* @memberof NetManager
*/
listenResponse(clsOrType: IResponseDataConstructor | string, handler: ResponseHandler, thisArg?: any, once?: boolean, observable?: IObservable): void;
/**
* 移除一个通讯返回监听
*
* @param {(IResponseDataConstructor|string)} clsOrType 要移除监听的返回结构构造器或者类型字符串
* @param {ResponseHandler} handler 回调函数
* @param {*} [thisArg] this指向
* @param {boolean} [once=false] 是否一次性监听
* @param {IObservable} [observable] 要发送到的内核
* @memberof NetManager
*/
unlistenResponse(clsOrType: IResponseDataConstructor | string, handler: ResponseHandler, thisArg?: any, once?: boolean, observable?: IObservable): void;
/**
* 发送多条请求,并且等待返回结果(如果有的话),调用回调
*
* @param {RequestData[]} [requests] 要发送的请求列表
* @param {(responses?:ResponseData[]|Error)=>void} [handler] 收到返回结果或错误后的回调函数
* @param {*} [thisArg] this指向
* @param {IObservable} [observable] 要发送到的内核
* @memberof NetManager
*/
sendMultiRequests(requests?: RequestData[], handler?: (responses?: ResponseData[] | Error) => void, thisArg?: any, observable?: IObservable): void;
/**
* 异步版本的sendMultiRequests
*
* @author Raykid
* @date 2019-03-08
* @param {RequestData[]} [requests] 要发送的请求列表
* @param {IObservable} [observable] 要发送到的内核
* @param {boolean} [canReject=false] 是否允许reject,默认false,即允许重试
* @returns {Promise<ResponseData[]>} 返回一个Promise用于异步监听回调
* @memberof NetManager
*/
sendMultiRequestsAsync(requests?: RequestData[], observable?: IObservable, canReject?: boolean): Promise<ResponseData[]>;
/** 这里导出不希望用户使用的方法,供框架内使用 */
__onResponse(responseCls: IResponseDataConstructor, result: any, request?: RequestData): void | never;
__onError(responseCls: IResponseDataConstructor, err: Error, request?: RequestData): void;
private recurseResponse;
}
/** 再额外导出一个单例 */
export declare const netManager: NetManager;