JSFiddle - React, Tailwind, and code Playground
HTML
<div id='numbers'></div>
JavaScript
let arr = [1, 2, 3, 4, 5];
let $numbers = document.getElementById('numbers');
// Denna metod är i sitt egna namespace och körs direkt efter den initieras, notera (arr).
(function nextNumber(numbers) {
// Kontrollerar om vi fortfarande har värden i arrayen som behöver bearbetas
if (numbers.length > 0) {
// Tar bort första värdet och returnerar det till nr
let nr = numbers.shift();
// Vänta 500 ms, här simulerar jag din async metod som kan ta 2-5 sekunder eller hur länge den nu tar.
setTimeout(() => {
// Bara för att printa ut det åt dig; hade jag använt en alert så hade den lika gärna kunnat bromsa en forEach även om koden inte hade fungerat för din custom-metod då.
let $div = document.createElement('div');
$div.append(nr);
$numbers.append($div);
// Nu är vi klara med detta numret och går vidare
nextNumber(numbers);
}, 500);
} else {
// Nu har vi kört igenom alla nummer
$numbers.append('Done');
}
}(arr));