Но появилась новая проблема. Иногда скрипт во время работы внезапно запрещает выделять действия. Т.е при клике на любое действие, оно просто не выделяется красным. Это второй баг, независимый от первого если что
Долгое время работы блока nodejs
-
Есть кусок кода который выполняется очень долго.
Суть этого участка кода в проверки уникальности используемого прокси.

Код из кубика nodejsstartP = new Date().getTime(); let proxies = JSON.parse([[PROXY_CONTENT]]); endP = new Date().getTime(); console.log(`parse: ${endP - startP}ms`); //console.log(proxies); function filterByIp(arr, ip) { return arr.filter(function(item, i, arr) { return (item.real_ip == ip); }); }; function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается } function getProxy(random = false){ let used_ips = [[USED_IPS]]; let proxy = false; if(random){ start = new Date().getTime(); if(used_ips.length){ used_ips.forEach(function(item, i, arr) { //console.log(item); old_proxy = filterByIp(proxies, item.real_ip); if(old_proxy.length){ proxy = old_proxy[0]; return; } }) } end = new Date().getTime(); console.log(`used_ips: ${end - start}ms`); } if(!proxy) { start = new Date().getTime(); let proxyIndex = getRandomInt(0, proxies.length); //console.log('proxyIndex '+proxyIndex); proxy = proxies[proxyIndex]; end = new Date().getTime(); console.log(`random proxy: ${end - start}ms`); } let block_ips = [[BLOCK_IPS]]; if(block_ips.length){ start = new Date().getTime(); let block_ip_check = false; block_ips.forEach(function(item, i, arr) { //console.log(item); if(item.ip == proxy.real_ip){ block_ip_check = true; return; } }) end = new Date().getTime(); console.log(`block_ips: ${end - start}ms`); console.log('block_ip_check '+block_ip_check); if(block_ip_check){ return getProxy(false) } } let all_used_ips = [[ALL_USED_IPS]]; if(all_used_ips.length){ start = new Date().getTime(); let all_used_check = false; all_used_ips.forEach(function(item, i, arr) { //console.log(item); if(item.real_ip == proxy.real_ip){ all_used_check = true; return; } }) end = new Date().getTime(); console.log(`all_used_ips: ${end - start}ms`); console.log('all_used_check '+all_used_check); if(all_used_check){ return getProxy(false) } } return proxy; } start1 = new Date().getTime(); [[PROXY_OBJECT]] = getProxy(true); end1 = new Date().getTime(); console.log(`all: ${end1 - start1}ms`); console.log('getProxy'); [[BLOCK_IPS]] = [[ALL_USED_IPS]] = [[USED_IPS]] = '';Вообщем что мы видим в итоге в консоле
[394756266] [15:39:21] Поток №1 : parse: 18ms [394756266] [15:39:22] Поток №1 : used_ips: 2ms [394756266] [15:39:22] Поток №1 : block_ips: 0ms [394756266] [15:39:22] Поток №1 : block_ip_check false [394756266] [15:39:22] Поток №1 : all_used_ips: 1ms [394756266] [15:39:22] Поток №1 : all_used_check true [394756266] [15:39:22] Поток №1 : random proxy: 0ms [394756266] [15:39:22] Поток №1 : block_ips: 0ms [394756266] [15:39:22] Поток №1 : block_ip_check false [394756266] [15:39:22] Поток №1 : all_used_ips: 0ms [394756266] [15:39:22] Поток №1 : all_used_check false [394756266] [15:39:22] Поток №1 : all: 3ms [394756266] [15:39:22] Поток №1 : getProxy [465490379] [15:39:22] Поток №1 : 33043 ms [546491848] [15:39:22] Поток №1 : Замер времениТаким образом получается что все замеры в самом блоке это all + parse = 21 мс
А реальное время работы состовляет 33043 мсЯ понимаю что там огромные массивы данных сравниваются для вычисления уникального ip но почему такая большая разница во времени внутри блока и за его пределами.
-
Только сейчас удалось решить эти проблему
Как понял проблема была из за того что у меня данные получались из базы в выше стоящем блоке а их там было не сколько десятков тысяч.
И вот при предаче их в блок где происходили проверки, и возникали все эти тормаза.
Как только я объединил все блоки получения данных из базы с блоком проверок, то время которое не обходимо сразу же стало в рамках разумного сейча где то 4-6 сек, а не 30-60
как это было раньше.