我有一个有趣的任务,但我什至对学习工人感到困惑。有一个 10-30K 对象的维度数组。我想在可用流的数量和每个子数组中将其分解为子数组,以实现在某些字段中搜索所需对象的功能。
对于将数组划分为子数组和搜索功能的实现的问题 - 一切都很好。但是如何在每个子数组中同时在工作人员的帮助下开始搜索 - 有麻烦(
我刚开始熟悉工人,并没有完全了解一切。我将不胜感激您的帮助或建议。
PS 执行代码我得到一个错误
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));