Как справиться с интенсивной задачей процессора на электроне - PullRequest
0 голосов
/ 03 декабря 2018

Я разрабатываю настольное приложение с 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 использует обратный вызов.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...