async function a(urls) { let promises = []; let sorted = []; for (let i = 0; i < urls.length; i++) { let req = new Promise((resolve, reject) => { let url = urls[i]; console.log("Loading " + url); imgReverser("/content/" + url).then(canvas => { console.log("Saving " + url); const uri = canvas.toDataURL('image/jpeg', 0.9); sorted.push([uri, i]); resolve(); }); }); promises.push(req); } return Promise.all(promises).then(() => { sorted.sort((a, b) => a[1] - b[1]); for (let i = 0; i < sorted.length; i++) { let uri = sorted[i][0]; let newP = document.createElement('img'); newP.src = uri; newP.classList.add('asdfasdf'); document.getElementById('chapter_container').append(newP); } }); }