Показать сообщение отдельно
  #7 (permalink)  
Старый 30.06.2018, 21:04
Интересующийся
Отправить личное сообщение для arealhz Посмотреть профиль Найти все сообщения от arealhz
 
Регистрация: 21.01.2017
Сообщений: 11

Сообщение от Aetae Посмотреть сообщение
1. setTimeout - не возвращает промис, его бесполезно await.
2. ключевое слово await имеет смысл использовать именно там, где ты что-то ждёшь.(а конкретно исключительно перед промисом или вызовом async функции) Если async функция вызвана без этого ключевого слова - то она просто вызвана, дальнейший код не ждёт асинхронного ответа, независимо от того, что там у ней внутри.

Примерно так должен был выглядеть код:
"use strict";
'esversion: 6';
(async function(){

  function procData(val, i){
    return new Promise((resolve, reject) => setTimeout(() => {
      var ret = i + "\t" + val + " #";
      console.log(ret);
      resolve(ret)
    }, 3000));
  }


  var arr = [3, 5, "asdf", 8, 0];

  for(let n in arr){
    await procData(arr[n],n)
  }

}())
Это действительно работает, но сам код для меня похож на магию вне Хогвартса.

Сейчас буду пытаться разобрать этот код, так как без понимания что происходит - использовать вряд ли получиться.

Спасибо большое за пример работающей конструкции! Буду теперь RTFM...
Ответить с цитированием