ipcRenderer.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const { ipcRenderer: ipc } = (window.require && window.require('electron')) || window.electron || {}
  2. /**
  3. * (将废弃,请使用 $ipcInvoke 代替)异步调用主函数
  4. * @param ipc
  5. * @param channel
  6. * @param param
  7. * @returns {Promise<unknown>}
  8. */
  9. const call = (ipc, channel, param) => {
  10. return new Promise((resolve) => {
  11. ipc.once(channel, (event, result) => {
  12. console.log('[ipcRenderer] [call] result:', result)
  13. resolve(result)
  14. })
  15. ipc.send(channel, param)
  16. })
  17. }
  18. /**
  19. * 发送异步消息(invoke/handle 模型)
  20. * @param channel
  21. * @param param
  22. * @returns {Promise}
  23. */
  24. const invoke = (channel, param) => {
  25. const message = ipc.invoke(channel, param);
  26. return message;
  27. }
  28. /**
  29. * 发送同步消息(send/on 模型)
  30. * @param channel
  31. * @param param
  32. * @returns {Any}
  33. */
  34. const sendSync = (channel, param) => {
  35. const message = ipc.sendSync(channel, param);
  36. return message;
  37. }
  38. export default {
  39. install(Vue) {
  40. Vue.prototype.$ipc = ipc // 全局注入ipc
  41. Vue.prototype.$ipcCall = (channel, param) => call(ipc, channel, param)
  42. Vue.prototype.$ipcInvoke = invoke
  43. Vue.prototype.$ipcSendSync = sendSync
  44. }
  45. }