Kozack
@Kozack
Thinking about a11y

Как вынести выполнение функции в отдельный процесс и вернуть результат?

Пишу приложение на Electron. В нём, вызывается функция doWithArray () которая преобразовывает многомерный массив. Проблема в том, что зачастую этот массив - огромный. И его обработка занимает много времени. И на время обработки интерфейс приложение не отвечает.
Возможно ли выполнить эту функцию в отдельном процессе, чтобы интерфейс не "замораживался" после чего вернуть результат в родительский?
  • Вопрос задан
  • 404 просмотра
Пригласить эксперта
Ответы на вопрос 2
@RidgeA
Как-то так.
let promise = new Promise((resolve, reject) => {
    doWithArray(...)
    resolve(...)
}).then(...).catch(...)

Это самый простой вариант. Это не в отдельном процессе - это асинхронно. Т.е. вычисления будут проводиться в том же потоке, но не будут мешать основному процессу - не будет замораживаться интерфейс.
Для вынесения действительно в отдельный процесс - надо использовать https://nodejs.org/api/child_process.html
Ответ написан
@Coder321
const fork = require('child_process');
const childModule = fork('./your_module');
childModule.on('message', callback)

Создаете с своей функции модуль, форкаете его, ставите обработчики.
fork
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы