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

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

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

В них нет ничего нового, их просто доработали. Обещания JavaScript существуют в той или иной форме API уже много лет. Даже в jQuery есть что-то похожее, называемое отложенными, хотя они работают по-разному.

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

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

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

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

Это буквально означает, что вы можете использовать метод then() в конце промиса и запускать совершенно новые асинхронные процессы, используя результаты. Вы можете связать столько их вместе, сколько вам нужно, и все они будут запускать код асинхронно.

Вот картинка того, как выглядят промисы:

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

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

Хорошо. Пришло время узнать еще больше о JavaScript, особенно если вы только начинаете. Загрузите мой бесплатный учебник по JavaScript здесь: https://bit.ly/2IZBRpw.

Что тебе терять? Я имею в виду, это бесплатно. На прошлой неделе его скачали 53 человека, так что попробуйте.