Я пытался переместить алгоритм сортировки в новый поток в NodeJS, но в потоке он не распознает метод get ().Я попытался импортировать HashMap внутри потока, но это тоже не сработало.Не уверен, что метод forEach () работает с HashMaps, но попытался с простым безуспешно.Вот фрагмент кода, с которым у меня проблема:
const thread = spawn(function(input,done) {
var HashMap = require('hashmap');
var CoinSort_Market_ASC = input.coin;
var CoinMap = new HashMap();
CoinMap = copy(input.map);
var SortArray = CoinSort_Market_ASC;
if (SortArray.length<CoinMap.size){
CoinMap.forEach(k=>{
console.log(k.id);
SortArray.push(k.id);
})
}
var csere = true;
var volt_csere = false;
console.log("Rendezes: MARKAT CAP ASC");
var size = SortArray.length;
var szamlalo = 0;
szamlalo++;
while (csere==true){
csere = false;
for(var j = 0; j < (size-szamlalo);j++){
var value1 = (CoinMap.get(SortArray[j])).market_data.market_cap.usd;
var value2 = (CoinMap.get(SortArray[j+1])).market_data.market_cap.usd;
value1 = parseFloat(value1);
value2 = parseFloat(value2);
if(!value1)
value1 = 0;
if(!value2)
value2 = 0;
if (value2<value1){
var cs = SortArray[j];
SortArray[j] = SortArray[j+1];
SortArray[j+1] = cs;
csere = true;
volt_csere = true;
}
}
}
done({SortArray});
});
setInterval(function(){
thread
.send({coin:CoinSort_Market_ASC,map:CoinMap})
.on('message', (response)=>
CoinSort_Market_ASC = response;
thread.kill();
}).on('exit', function() {
console.log('Worker has been terminated.');
});
}, 9000);
Вот ошибка, которая была выдана NodeJS:
ReferenceError: copy is not defined
at module.exports (evalmachine.<anonymous>:6:2)
at process.<anonymous> (/home/webuser/cripto/cripto/live/node_modules/threads/lib/worker.node/slave.js:84:20)
at process.emit (events.js:182:13)
at emit (internal/child_process.js:828:12)
at process.internalTickCallback (internal/process/next_tick.js:72:19)