nodeJs HashMap не работает правильно в потоке - PullRequest
0 голосов
/ 01 декабря 2018

Я пытался переместить алгоритм сортировки в новый поток в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...