API Google принимают обещания


Кажется, что обещания — это то, чем движется каждый JavaScript-фреймворк. Последней версией Promise является клиентская библиотека JavaScript Google.

Клиентская библиотека Google JavaScript все еще находится в стадии бета-тестирования, но это унифицированный способ доступа к большинству, но не ко всем API Google — например, она не поддерживает Карты или Планета Земля. Идея состоит в том, что единая библиотека обеспечивает всю аутентификацию и безопасность, необходимые для доступа к серверу Google. Для простых запросов нужен только ключ Google. Для запросов, которые обращаются к личным данным, наведите указатель мыши, требуется транзакция OAuth 2.

Как и в случае со всеми API-интерфейсами JavaScript, которые полагаются на запросы в стиле Ajax, большая проблема при написании четкого и легкого для понимания кода — это распространение обратных вызовов. Наиболее распространенным решением этой проблемы является использование обещаний.

Promise — это объект, возвращаемый вызовом API, который содержит состояние вызова — ожидающий, выполненный или отклоненный. Обычно тогда вы можете использовать методы объекта Promise, чтобы указать, что должно произойти, когда состояние изменится на выполнено или отклонено.

Первоначальная версия библиотеки была основана на обратных вызовах, но при переходе на Promises сохранялась определенная обратная совместимость. Эти методы возвращают объект Promise только в том случае, если функция обратного вызова не предоставлена.

Ключевым преимуществом Promises является то, что запросы могут быть связаны в свободном стиле, и это делает код более читаемым, поскольку он ближе к потоку управления, который соответствует асинхронному процессу, если каждый вызов блокируется.

Принятие обещаний — это хорошо, и, поскольку они включены в языковую спецификацию ECMAscript 6, можно ожидать, что они станут все более стандартным способом обработки асинхронности в JavaScript.

Однако Promises по-прежнему являются конструкцией низкого уровня, и есть более эффективные способы решения проблемы, такие как конструкции async и await, найденные в C #. Это восстанавливает синхронный поток управления асинхронной последовательностью вызовов и полностью снимает нагрузку с программиста и перекладывает ее на движок JavaScript. В настоящее время предложения по async и await в JavaScript нацелены на ECMAscript 7. Будем надеяться, что мы все не будем тратить слишком много времени на обещания до их появления.


Добавить комментарий