electron 主进程与渲染进程通信(promise 封装)

1:渲染层事件中心

const ipcRenderer = require('electron').ipcRenderer;
const sendBridge = (msg = { active: '', data: {} }) => {
  return new Promise((resolve, reject) => {
    ipcRenderer.on(msg.active, (event, arg) => {
      resolve(arg);
    });
    console.log('8>>>bridge.js', msg);
    ipcRenderer.send(msg.active, msg);
  });
};
export default sendBridge;

1.2 渲染层 事件中心注册

import Vue from 'vue';

import sendBridge from './events/bridge';

Vue.prototype.$sendBridge = sendBridge;

 

2:主进程 接收并处理

index.js 注册IPCHandler

import IPCHandler from './IPCHandler';
let context = {}; // 全局上下文
context.app = app;
context.isDev = process.env.NODE_ENV !== 'production';
context.ipcHandler = new IPCHandler(context);

IPCHandler.js

const { ipcMain } = require('electron');
class IPCHandler {
  constructor (context) {
    this.mContext = null;
    this.mContext = context;
    // 通讯录
    ipcMain.on('onInsertAllContacts', this.onInsertAllContacts.bind(this));
  }
  async onInsertAllContacts (event, args, userInfo) {
    console.log(38, event, args);
    event.sender.send(args.active, { active: args.active, result });
  }
}
export default IPCHandler;

3:渲染层 调用

this.$sendBridge({active: 'onInsertAllContacts', data: []}).then(res => {
});

 

 

总体思路:

页面组件 (active) =》 事件中心(ipcRenderer active) =》主进程接收中心(ipcMain active)=》【主进程业务处理】=》主进程接收中心(ipcRenderer callback)=》页面组件 (active,callback)

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值