<MyRusakov.ru />

Создание приложений для Android с нуля

Создание приложений для Android с нуля

Данный курс научит Вас создавать приложения любой сложности для Android. Курс состоит из 16-ти разделов, из которых Вы узнаете, как создавать свои собственные приложения для Android.

В курсе содержится вся необходимая теория, а также множество практических примеров, в том числе, и из моей личной практики.

Просмотрев данный курс и выполнив упражнения из него, Вы сможете создавать приложения любой сложности для самой популярной мобильной ОС в мире - Android.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

JavaScript обещания. Часть 1

JavaScript обещания. Часть 1

Если вы когда-либо видели что-то подобное:

 p.then(function(result) {
   // выполняем некое действие с результатом
  });

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

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

Основная же идея, стоящая за промисами заключается в следующем:

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

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

Такая же идея лежит и в основе промисов. Когда функция возвращает обещание, “она говорит – вот мое обещание, что вернусь к тебе с результатом так скоро, как закончу работу над задачей”.

А теперь вместо того, чтобы занимать вас скучной теорией и терминологией, давайте сразу возьмемся за практику, походу дела подкрепляя ее необходимыми комментариями.

Скорее всего, вы уже имели дело с AJAX запросами. Если нет, то вот вам в помощь мой Видеокурс "JavaScript, jQuery и Ajax с Нуля до Гуру", который научит вас и AJAX запросы выполнять и, вообще, много чему еще. Для выполнения AJAX-запросов, обычно используют, либо объект XMLHttpRequest, либо метод $.get() из JQuery, либо еще какую либо JavaScript библиотеку.

Но, известно, что прикладной интерфейс XMLHttpRequest не так прост в использовании. Однако, благодаря новому fetch API в AJAX запросы вдохнули новую жизнь. И в нем используются промисы для обработки результатов.

Так, что же это означает, когда я говорю, что fetch API использует обещания. Когда вы делаете запросы с помощью функции fetch(), вот так:

  fetch(‘/api/post/123’);

она будет возвращать объект промиса.

Раньше, нам нужно было бы передавать callback-функцию, которая была бы вызвана, когда асинхронный запрос завершен. Но при работе с промисами мы используем метод .then(onFulfilled, onRejected). Мы можем создавать цепочки вызовов метода .then() для доступа к результату вызова функции fetch().

 fetch(‘/api/post/123’).then(function (result) {
   console.log('Результат запроса' + result);
  }, function (error){
   console.log('Ошибка: ' + error);
  })

Метод .then позволяет получать нам доступ к результату его вызова через 2 дополнительных аргумента:

  1. onFulfilled – вызывается, когда обещание завершено успешно. В качестве первого аргумента оно принимает значение обещания.
  2. onRejected – вызывается, когда обещание не выполнено. В качестве первого аргумента в него передается причина отказа.

Как вы могли заметить, я употребил два новых термина, выполнено и отклонено, которые называются состояниями (states) обещания. Кроме этих двух состояний, существует еще и третье, в котором может находиться обещание – “ожидающее” – (pending).

Теперь давайте рассмотрим, что это означает в контексте нашего вышеупомянутого примера.

  1. Вызов fetch() возвращает обещание, как упоминалось выше.
  2. Обещание будет в ожидающем состоянии тех пор пока запрос не завершен.
  3. Из состояния ожидания, обещание может перейти в состояние выполненное или отклоненное.

Надо отметить, что как только состояние JavaScript обещания изменилось на выполненное или отклоненное, его значение уже изменено быть не может.

Таким образом, данная статья является вводной статьей в цикле статей про промисы в JavaScript. В ней были представлены общие сведения о том, что такое промисы, в каких состояниях они могут находиться. А в следующих статьях мы продолжим рассматривать промисы (обещания) в JavaScript.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.