Я разрабатываю настольное приложение с Electron и Angular 7.
Есть часть, где мне нужно сжать папку, которая может иметь большой вес.Я использую ipcRenderer для отправки от углового до электронного сигнала, чтобы начать архивирование.Это часть ipcMain:
const { app, BrowserWindow, ipcMain } = require("electron");
const zip = require('file-zip');
...
ipcMain.on('zip', (event, args) => {
const { from, to } = args;
zip.zipFolder(from, to, (error) => {
event.sender.send('zip-response', error);
});
});
Проблема в том, что когда папка имеет огромный размер, задача занимает много времени и блокирует обработанный процесс.
Я уже попробовалс «удаленным электроном» и его методом requireTaskPool , например:
const zip = require('file-zip');
function zipDir(from, to) {
zip.zipFolder(from, to, (error) => {
return error;
});
}
module.exports = zipDir;
и:
import { requireTaskPool } from 'electron-remote';
const zip = requireTaskPool(require.resolve('./zip'));
ipcMain.on('zip', (event, args) => {
const { from, to } = args;
zip(from, to).then(error => event.sender.send('zip-response', error));
});
, но это не такработать, «zip» всегда разрешается немедленно, без выполнения функции zip, возможно потому, что zip.zipFolder использует обратный вызов.
Есть идеи?