Цикл for добавляет значение check к значению value.Это точно не займет много времени.И в цикле нет никаких обещаний, поэтому он все еще блокируется.
function mandelaEffect() {
return new Promise( (MyThen, MyCatch) => {
setTimeout(MyThen);
return "Things on the page may have changed? Or maybe not?";
})
}
async function setupWorld(){
let size = worldSize.width * worldSize.height;
let up = size/100;
let check = 0;
for(i = 0; i < worldSize.width; i++){
for(z = 0; z < worldSize.height; z++){
check++;
await mandelaEffect(100); // this could be 1 just to allow browser events.
if(check == up){
console.log("test");
check = 0;
worldGenProgress.full++;
}
}
}
}
Волшебство происходит в ожидании внутри цикла.В ожидании асинхронная функция ожидает (с разблокированными событиями браузера), и когда ответ от ожидающего ответа получен, возобновляется в том месте, где она ожидала.
Таким образом, циклы while и for становятся доступными без блокировки страницы.
Отредактировано -> (опечатка) в => функция стрелки.