Обработка многомерного массива с помощью worker_threads

Всем привет. Имею интересную задачу, но я чет запутался в изучении воркеров. Есть массив размерностью в 10-30К объектов. Я хочу разбить его на подмассивы в количестве доступных потоков и в каждом подмассиве осуществить функцию поиска нужного объекта по определенным полям.

С вопросом разбиения массива на подмассивы и реализацией функции поиска - все хорошо. Но как с помощью воркеров запустить поиск одновременно в каждом подмассиве - есть траблы(

Я только начал знакомиться с воркерами и не до конца все понял. Буду благодарен за помощь либо совет.

P.S. Выполняя код получаю ошибку

//НАЧАЛО РАБОТЫ С ПОТОКАМИ
function evalInWorker(f){
    if (isMainThread){
        return new Promise((res, rej) =>{
            const worker = new Worker(__filename, {eval: true});
            worker.on('error', e => rej(e));
            worker.on('message', msg => {
                res(msg);
            });
            worker.on('exit', code => {
                if(code !== 0)
                    rej(new Error(`Worker stopped with exit code ${code}`));
            });
        });
    }else {
        parentPort.postMessage(f());
    }
}
//getSlicedArr возвращает массив с подмассивами, search - ищет в подмассиве объект по нужным свойствам needToFind
const tasks = (threads, dataArr, needToFind, arr = []) => {
    getSlicedArr(dataArr, threads).map( e => arr.push(evalInWorker(search(e, needToFind))));
    return arr;
};

Promise.all(tasks(subArrSize, dataArr, needToFind))
    .then(messList => {
        messList.forEach(m => console.log(m))
    })
    .catch(e => console.log(e));

введите сюда описание изображения


Ответы (0 шт):