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(). 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