Как сделать так, чтобы данный код синхронно выполнялся
как сделать данных код синхронным? Чтобы он все выводил по очереди? Сначала то, что внутри функции setTimeout, потом обычный console.log(value);, ну и тд.
const test = async () => {
let qwe = [1000, 2000 ,3000];
await _.each(qwe, async (value) => {
await setTimeout(() => {
console.log(value)
}, value);
console.log(value);
})
console.log('1 part')
await qwe.map(async (value) => {
await setTimeout(() => {
console.log(value)
}, value);
console.log(value);
})
await console.log('2 part')
}
test();
Ответы (1 шт):
Автор решения: Иван Поднебесный
→ Ссылка
Можно попробовать сделать так:
Array.prototype.asyncForEach = async function(callback)
{
let index = 0;
for(let val of this){
await callback(val, index++, this);
}
}
const test = async () => {
let qwe = [3000, 1000 ,2000];
await qwe.asyncForEach(async (val) => {
const asyncSetTimeOut = () => new Promise(res => {
setTimeout(() => {
console.log("qwe: From timeout: ", val);
res(val)
}, val)
});
await asyncSetTimeOut();
console.log("qwe: From asyncForEach: ", val);
});
let qwe2 = [1000, 3000, 2000]
await qwe2.asyncForEach(async (val) => {
const asyncSetTimeOut = () => new Promise(res => {
setTimeout(() => {
console.log("qwe2: From timeout: ", val);
res(val)
}, val)
});
await asyncSetTimeOut();
console.log("qwe2: From asyncForEach: ", val);
})
}
test();