Witam, próbuje zrobić w react'cie stronę w której użytkownik wybiera metodę sortowania a następnie zgodnie z wybranym algorytmem strona sortuje divy. Żeby nie robiło się to natychmiastowo funkcja ma w sobie await sleep().
O ile sortowanie działa poprawnie tak state się nie zmienia (raz się zmienia, raz nie zmienia, czasem sortuje tylko część divów, czasami w ogóle). Prawdopodobnie problem jest spowodowany właśnie await sleep(), bez niego wszystko dobrze działa ale nie wiem ani dlaczego to się psuje przez await sleep, ani tym bardziej jak to naprawić, a potrzebuje tego do poprawnego pokazania jak działają te algorytmy.
const [items, setItems] = useState([52,51,55,54,50,53,57,56,59,58]);
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const bubble = async () =>{
let itemsArray = [...items];
let buffer;
for(let i = items.length - 1; i > 0; i--){
for(let j = 0; j < i; j++){
if(itemsArray[j] > itemsArray[j+1]){
buffer = itemsArray[j];
itemsArray[j] = itemsArray[j+1]
itemsArray[j+1] = buffer;
await sleep(100);
setItems(itemsArray);
}
}
}
}