Async/await перезапуск основной функции
main - основная функция / get_ids - return id's / get_items - return items
let reset = false;
async function main(){
let ids = await get_ids();
for (let i = 0; i < ids.length; i += 50) {
if(reset) break;
let items = await get_items(ids.slice(i, i + 50));
}
if(reset){
reset = false;
main();
}
}
main();
get_ids:
async function get_ids(){
config.body = JSON.stringify({'action':'get_ids'});
let response = await fetch(host, config);
while (!response.ok) {
response = await fetch(host, config);
}
let ids = await response.json();
return ids.result;
}
get_items:
async function get_items(ids){
config.body = JSON.stringify({'action': 'get_items', 'params': {'ids': ids}});
let response = await fetch(host, config);
while (!response.ok) {
response = await fetch(host, config);
}
let items = await response.json();
return items.result;
}
Click - Reset
let reset_button = document.querySelector('.reset');
reset_button.addEventListener('click', function(){
reset = true;
});
Ответы (1 шт):
Автор решения: Evgeniy Leonidov
→ Ссылка
Не является ли ошибочкой присваивание true элементу DOM, а именно, кнопке с классом .reset. Или же я не правильно вас понял.
Если я правильно всё понял, то ваш код должен быть примерно такой:
let reset = false;
async function get_ids() {
config.body = JSON.stringify({'action': 'get_ids'});
let response = await fetch(host, config);
while (!response.ok) {
response = await fetch(host, config);
}
let ids = await response.json();
return ids.result;
}
async function get_items(ids) {
config.body = JSON.stringify({'action': 'get_items', 'params': {'ids': ids}});
let response = await fetch(host, config);
while (!response.ok) {
response = await fetch(host, config);
}
let items = await response.json();
return items.result;
}
async function main() {
let ids = await get_ids();
for (let i = 0; i < ids.length; i += 50) {
if (reset) break;
let items = await get_items(ids.slice(i, i + 50));
}
if (reset) {
reset = false;
main();
}
}
let resetButton = document.querySelector('.reset');
resetButton.addEventListener('click', function() {
reset = true;
});
main();
После прерывания, если reset активен, он сбрасывается, и функция main тогда вызывается снова. Это даст реализовать перезапуск процесса без перезагрузки страницы