document.querySelectorAll('li').forEach( function(li) {
new Promise(function(resolve) {
setTimeout( () => resolve(console.log(li.textContent)), 1000);
})
})
const asyncForEach = (data, callback) =>
Array.prototype.reduce.call(
data,
(promise, n, i, a) => promise.then(() => callback(n, i, a)),
Promise.resolve()
).then(() => {});
// или
async function asyncForEach(data, callback) {
for (let i = 0; i < data.length; i++) {
await callback(data[i], i, data);
}
}
asyncForEach(
document.querySelectorAll('li'),
li => new Promise(r => setTimeout(() => r(console.log(li.textContent)), 1000))
);