Promise-y IPC calls in Electron.
npm install --save electron-promise-ipc
The most common use case: from the renderer, get data from the main process as a promise.
// in main process;;promiseIpc;// in renderer;promiseIpc;
You can also send data from the main process to a renderer, if you pass in its WebContents object.
// in main process;promiseIpc;// in renderer;promiseIpc;
Any arguments to
send() will be passed directly to the event listener from
on(), followed by the IPC event object. If there is an error thrown in the main process's listener, or if the listener returns a rejected promise (e.g., lack of permissions for a file read), then the
send() promise is rejected with the same error.
Note that because this is IPC, only JSON-serializable values can be passed as arguments or data. Classes and functions will generally not survive a round of serialization/deserialization.
By default, the promise will wait forever for the other process to return it some data. If you want to set a timeout (after which the promise will be rejected automatically), you can create another instance of
PromiseIpc like so:
// main process code remains the same;promiseIpc;// in renderer - timeout is specified on the side that requests the data;const promiseIpc = maxTimeoutMs: 2000 ;promiseIpc; // will error out after 2 seconds
You can remove a listener with the
off() method. It's aliased to
removeListener() as well.
;promiseIpc;promiseIpc; // never mind