Console.log и жду - PullRequest
       26

Console.log и жду

0 голосов
/ 02 июля 2018

Я заметил, что console.log(await some_promise()); работает нормально, но если я создаю свою собственную функцию журнала, она не работает, и он говорит, что ожидание работает только в асинхронных функциях. Но почему же это работает в console.log ()? Если console.log является асинхронным, то почему же он работает без обещаний?

1 Ответ

0 голосов
/ 02 июля 2018

Но почему же это работает в console.log ()

Это не так. Аргументы, передаваемые в функцию, всегда оцениваются до , когда вызывается функция. То есть await some_promise() оценивается до вызова console.log, а не в it. console.log не является async. Ваш код эквивалентен

const result = await some_promise();
console.log(result);

или

some_promise.then(result => console.log(result))

console.log ничего не знает о том факте, что ценность, которую вы ему передаете, возникла из обещания.

Если console.log является асинхронным, то почему же он работает без обещаний?

Функция async

  1. возвращает обещание
  2. позволяет использовать await для развёртывания обещаний.

Вот и все. Это не ограничивает, какие значения вы можете передать ему. Таким образом, даже если console.log было async, вы можете передать ему любое значение.

...