Автор оригинала: FreeCodeCamp Community Member.
By Jamund Ferguson
Вдохновлен Пост команды Zeit на тему Моя команда в PayPal недавно мигрировала нашу основную кодовую базу Server-Side для использования Async/a ждать. Я рад поделиться с вами некоторые из вещей, которые мы узнали по пути.
Начнем с какой-то терминологии:
- Async Function
- Await ключевое слово
Люди обычно говорят Async/ждут, что очень мило и приятно, но вы должны знать, что они не то же самое. Есть Async Функции И есть a ждать ключевое слово Отказ Они, безусловно, связаны друг с другом, но асинхронные функции, в частности, могут быть использованы без ждут. Как так?
Async Функции вернуть обещание
Когда вы создаете функцию с ключевым словом ASYNC, что функция всегда будет вернуть обещание. Когда вы возвращаетесь в свою функцию Async, он обещает вашу ценность в обещании.
Даже если ваш код бросает внутри асинхронизации функции, она не будет автоматически позвонить, вместо этого она вернет отклоненное обещание
Async-функции – единственное место, где вы можете использовать жду
В дополнение к преобразованию возврата в обещание, асинхронная функция также особенная в том, что это единственное место, где вы можете использовать ключевое слово await. *
Что такое ждать ключевое слово? Ждут, позволяет вам приостановить выполнение асинхронизации, пока не получает результаты обещания. Это позволяет писать async код, который читает в том порядке, что он выполнен.
Await позволяет вам вообще писать асинхронный код без обратных вызовов. Это делает ваш код гораздо более читабельным. И ждут работает с любым обещанием, а не только обещаниями, созданными асинхронными функциями.
Обработка ошибок в асинхронных функциях
Потому что асинхронная функция – это Обещание , когда ты бросить Внутри асинской функции он поглощен и вернулся в виде отклоненного обещания.
Если вы используете ждать позвонить в Обещание Вы можете обернуть его в попробуйте/поймать Или вам нужно добавить поймать Обработчик к возвращенному обещанию.
Обещающие ошибки обычно пузыряют их родителю, поэтому вам обычно нужен только этот попробуйте/поймать на вашем верхнем уровне обещание.
Положить все это вместе
Воспользовавшими ошибками, обрабатывающимися свойствами обещаний и краткий синтаксис асинхронных функций могут дать некоторые мощные простые результаты.
В этом упрощенном примере вы можете посмотреть, как можно воспользоваться присущими возможностями обработки ошибок ASYNC функций для упрощения обработки ошибок в приложении Express
В моей команде в PayPal мы обычно обращаемся с ошибками с Далее (Err). Однако с Async/ждут, мы можем просто бросить Ошибки в любом месте кода и маршрутизатор будет передавать их на Следующий Функция, предоставленная Express Отказ Это огромное упрощение.
Переход от обратных вызовов к обещаниям и Async/await имеет конденсированные ошибки, обрабатывающую в нашем приложении и улучшит понимание для наших более сложных кодовых путей. Мне потребовалось пару часов, чтобы мигрировать большую часть наших маршрутов из простых обратных вызовов к этому новому подходу. На самом деле единственное, что вам нужно начать, это твердые знания обещаний и понимание Как настроить Babel Отказ
Я с нетерпением жду услышать ваш опыт с этими новинками функциями, и считаю, что они будут одним из моих любимых инструментов в JavaScript Toolbox, движущихся вперед.
* Верхний уровень await не допускается в текущем спецификации (оформление , хотя произошло некоторое обсуждение, возможно, позволяя этому в будущем ).