ESNext: Какова цель ключевого слова `async`?

В последнее время я часто использую ключевые слова async/await с объектами JavaScript Promise, и мне это нравится, но я не понимаю, какова на самом деле цель ключевого слова async.

Почему необходимо использовать ключевое слово async для функций, использующих await?


person damd    schedule 12.05.2017    source источник


Ответы (1)


Функции, отмеченные async, всегда возвращают обещание (в отличие от обычных функций):

Когда вызывается функция async, она возвращает Promise. Когда функция async возвращает значение, Promise будет разрешено с возвращенным значением. Когда функция async выдает исключение или какое-то значение, Promise будет отклонено с выброшенным значением.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function#Description

person robertklep    schedule 12.05.2017
comment
Просто чтобы уточнить, async — это синтаксический сахар. Это избавляет вас от набора текста, необходимого для обработки промисов и прочего. Но самое главное, async позволяет вам использовать ключевое слово await внутри функции. Вы не можете ничего ожидать от неасинхронной функции. - person netchkin; 12.05.2017
comment
@netchkin async — это синтаксический сахар, а async позволяет использовать ключевое слово await внутри функции. противоречат друг другу. - person a better oliver; 16.05.2017
comment
@zeroflagL: хорошая мысль! Я действительно неправильно использовал термин «синтаксический сахар». Я имел в виду, что это избавит вас от необходимости печатать, если вы будете писать код на основе обещаний вручную. - person netchkin; 16.05.2017