UNPKG

@truenewx/tnxet

Version:

互联网技术解决方案:Electron扩展支持

33 lines (31 loc) 1.52 kB
import * as StringUtil from '../../../tnxcore/src/util/string.ts'; import SafePromise from '../../../tnxcore/src/foundation/safe-promise.ts'; import {EventConstant} from '../constants.ts'; export default function request<T>(eventName: EventConstant, args: any[] = []): Promise<T> { const {ipcRenderer} = require('electron'); // 在此处导入才能避免初始化加载electron时加载主进程库而出错 return new SafePromise<T>((resolve, reject) => { let requestId = StringUtil.uuid32(); const listener = (event: any, responseId: string, error: any, ...result: any[]) => { if (requestId === responseId) { ipcRenderer.off(eventName.response, listener); if (error) { console.error(error); if (Array.isArray(error)) { error = error[0]; } if (error instanceof Error) { error = error.message || error.toString(); } reject(error); // reject只能接受一个参数 } else { // resolve只能接受一个参数,当有多个参数时,做为数组传递 resolve(result.length > 1 ? result : result[0]); } } }; ipcRenderer.on(eventName.response, listener); ipcRenderer.send(eventName.request, requestId, ...args); }, error => { window.tnx.error(error); }); }