Я пытаюсь использовать функцию с обратным вызовом в цикле forEach
.
Мне нужно дождаться завершения выполнения, прежде чем перейти к следующему шагу.
Вот мой код:
const arr = '6,7,7,8,8,5,3,5,1'
const id = arr.split(',');
const length = id.length;
id.forEach( (x, index) => {
(function FnWithCallback () {
setTimeout(() => { console.log(x) }, 5000);
})();
});
console.log('done');
Я придумал взлом:
const arr = '6,7,7,8,8,5,3,5,1'
const id = arr.split(',');
const length = id.length;
const fn = () => {
return new Promise (resolve => {
id.forEach( (id, index) => {
setTimeout(() => {console.log(id)}, 3000);
if(index === (length - 1))
resolve();
})
})
}
fn().then(()=> {
console.log('done');
})
Но взлом, похоже, сломан.
Могу ли я найти реальное решение для этого?Пакет NPM был бы действительно полезен.
Примечание: я взглянул на async.js.Я не уверен, что это то, чего я хочу, так как я пытаюсь избежать ада обратного вызова.