dingtalk-jsapi
Version:
钉钉 模块化 多端统一 API
51 lines (50 loc) • 1.53 kB
TypeScript
interface IEventData {
namespace: string;
eventName: string;
data: any;
}
interface IEventDataCacheFlag {
/** Mark is the cached data */
isCached: boolean;
cacheTimeStamp?: number;
}
declare type IEmitEvent = IEventData & IEventDataCacheFlag;
/**
* 获取对应 namespace 的 Channel,如果不存在则会新建
* @param namespace
* @returns Channel
*/
export declare const getChannel: (namespace: string) => Channel;
/**
* 释放对应 Channel,在其上注册的事件也会一并被释放
* @param namespace
*/
export declare const destroyChannel: (namespace: string) => void;
/**
*
* @returns 所有 Channel 对应的 namespace 列表
*/
export declare const getAllChannelNamespaces: () => string[];
interface IListenerOption {
/** Mark whether use the cached data */
useCache: boolean;
}
export declare class Channel {
private subscribedMethodsPromise;
private unSubscribedMethodsPromise;
private lastCacheMap;
private namespace;
private listenerMap;
constructor(namespace: string);
destroy(): void;
subscribe(eventName: string, listener: (data: IEmitEvent) => void, options?: IListenerOption): void;
unsubscribe(eventName: string, listener: (data: IEmitEvent) => void): void;
publish(eventName: string, data: any, options?: {
shouldUpdateCache?: boolean;
}): Promise<any>;
private publishCurrentInnerEvent;
private trySubscribeEvent;
private tryUnSubscribeEvent;
private addDTChannelEventListener;
}
export {};