В node js, как контролирование асинхронного программирования

Если у меня например есть два списка чисел и букв.

 var arrayletras = ["a","b","c","d","e"];
var arrayNum = [1,2,3,4];

arrayletras.forEach(function (valLetras) {
    console.log(valLetras+": ");
    arrayNum.forEach(function (valNum) {
        setTimeout(function () {
            console.log(valNum);
        },1000)
    })
})

Я хочу, чтобы они были первыми буква и despúes все числа. Я прочитал относительно callbacks и обещания, но это не заканчиваю решения этой проблемы

1
задан 11.07.2017, 19:44
1 ответ

Проблема setTimeout состоит в том, что просто добавляет callback диспетчера, потом продолжает, что Ваш курс, а именно не надеется, что завершается callback.

В Вашем месте ты должен использовать функции as¦-ncronas, и ждать в través от await ejecuci¦n одного Promise

var arrayLetras = ["a","b","c","d","e"];
var arrayNum = [1,2,3,4];

function sleep(ms)
{
  return new Promise(resolve => { setTimeout(resolve,ms) })
}

async function recorrer(){ 
  for (let letra of arrayLetras) 
    {
      console.log(letra)
      for (let numero of arrayNum)
        {
          console.log(numero)
          await sleep(1000)
        }
    }
}

recorrer()

Для mÃ: s informaci¦n
1. async
2. await
3. Promise

2
ответ дан 24.11.2019, 07:35
  • 1
    Ты можешь менять for in на один for of, чтобы это делать má s читабельный. – gugadev 11.07.2017, 22:04
  • 2
    @GustavoGarcí в уже я изменил có я говорю используя for..of – Eduen Sarceño 11.07.2017, 22:10