У меня есть два интервала, которым нужен доступ к одним и тем же данным.
Таким образом, в одном интервале я хочу нажать () элемент в массив, а затем в другом интервале я хочу получить первый элемент из массива, а затем удалить его.
например:
let array = [];
let count = 0;
setInterval( () => {
array.push(count);
count++;
}, 1000);
setInterval( () => {
let data = array[0];
array.shift();
console.log("received data: "+data);
}, 1000);
вывод этого:
received data: 0
received data: 1
received data: 2
received data: 3
....
Работает ли это также с более сложными функциями и большими массивами?
Может ли это вызвать какое-то странное поведение? Может быть, он может одновременно сдвигаться, толкаться и портить массив?
Это хороший способ сделать это? Есть ли лучшие способы?
EDIT:
Причина, по которой я хочу это сделать. Это потому, что я хочу скачать данные из разных ссылок. Поэтому внутри моего скрипта я вызываю функцию загрузки (ссылки), но это приведет к тому, что скрипт попытается загрузить много ссылок одновременно. Поэтому я хочу создать буфер, чтобы скрипт загружал только 100 ссылок одновременно.
Внутри скрипта я хочу вызвать загрузку (ссылку), где я хочу, а затем дать интервал позаботиться о загрузке только 100 ссылок одновременно. Таким образом, он удаляет 100 ссылок из буфера и загружает их. Пока скрипт вставляет новые ссылки в тот же массив.
Моя главная проблема в том, что, пока я выполняю shift (), массив каким-то образом реорганизуется. Можно ли попытаться сделать push () между этой фазой реорганизации? Или js не будет выполнять никаких операций над массивом, пока не будет завершен shift ()?