У меня есть веб-приложение со следующей строкой HTML:
<select id="dropdown"; onchange="update()">
и связанной JS:
function update()
{
val = document.getElementById("dropdown").value;
arr = some_dict[val];
CHUNK_SIZE = 1024;
i = 0;
function recursive_call()
{
data = arr.slice(CHUNK_SIZE*i, CHUNK_SIZE*i + CHUNK_SIZE);
if (data.length < CHUNK_SIZE){return;}
...
$.ajax({
type: "POST",
url: "/page",
data: {"data": data},
async: true,
success: function (d){
setTimeout(another_func, 3000);
recursive_call();
}
})
i++;
}
}
По сути, всякий раз, когда новое значение раскрывающегося списка выбрав, я рекурсивно извлекаю последовательные куски из массива и отправляю их на мой сервер. Когда длина массива меньше размера чанка, я возвращаюсь, останавливая этот процесс.
Проблема в том, что выбрано новое раскрывающееся значение и рекурсия не завершена. Я хотел бы остановить существующее повторение l oop, когда выбрано новое значение, и начало повторения для нового массива, связанного с новым значением.
Я пробовал несколько вещей, но код очень грязный и в дальнейшем запутает то, что я здесь описал.