evgenyspace
@evgenyspace
Исследователь

Как выполнить синхронную итерацию массива?

Подскажите, как выполнить синхронную итерацию? Консоль должная выводить последовательно 1, 2, ... с разной задержкой и вернуть массив значений * 2
let array = Array.from({ length: 10 }, (v, k) => k)

const fn = (el) =>
  setTimeout(() => {
  	console.log(el)
        return el * 2;
  },
  1000 * Math.random()
)

console.log(array.map(fn))
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
Fzero0
@Fzero0
Вечный студент
arr = Array.from({ length: 10 }, (v, k) => k);

function timeout(val){
    return new Promise((resolve, reject)=>{
        setTimeout(()=>{
            console.log(val);
            resolve();
        }, 1000 * Math.random());
    });
}
(async () => {
  for (const val of arr) {
    await timeout(val);
  }
  console.log('Расчет окончен');
})();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Negwereth
@Negwereth
lvivcss.com.ua
Сначала промапить, потом выводить?
Ответ написан
devellopah
@devellopah
попробуй так
let array = Array.from({ length: 10 }, (v, k) => k);

const fn = (el) => {
  setTimeout(() => { console.log(el) }, 100 * el);
  return el * 2;
};

console.log(array.map(fn));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы