<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

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

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

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

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

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

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

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

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

Введение в Async/Await в JavaScript

Введение в Async/Await в JavaScript

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

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

Вот именно поэтому, существует возможность добавления нового метода в объект Array, после чего у всех объектов данного типа появится этот метод, прямо во-время исполнения.

var someArray = [1, 2, 3];

Array.prototype.Lalala = function() {
  console.log('Ла-ла-ла; Новый метод');
};

someArray.Lalala(); // Ла-ла-ла; Новый метод

// Код выше не будет работать с реальными классами, так как изменение описания класса не влияет на сами объекты

Короче говоря,классы в JavaScript - это синтаксический сахар для Прототипного наследования.

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

Спецификация Async/Await

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

На протяжении многих лет, при работе с асинхронным кодом лет мы полагались на Callback-функции:

setTimeout(function() {
  console.log('Потом, около 13 млрд. лет назад произошел большой  взрыв');
}, 5000);

console.log('Сначала была тьма');

Callback-функции прекрасно решают задачу, до тех пор пока не появляется потребность выполнить последовательность асинхронных операций:

doThingOne(function() {
  doThingTwo(function() {
    doThingThree(function() {
      doThingFour(function() {
        // раз два три
      });
    });
  });
});

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

Смотрите: обещания

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

function buyCoffee() {
  return new Promise((resolve, reject) => {
    asyncronouslyGetCoffee(function(coffee) {
      resolve(coffee);
    });
  });
}

Функция buyCoffee возвращает объект Promise, представляющий процесс приобретения кофе. А функция resolve сигнализирует успешное завершение, оно получает в качестве аргумента значение, которое затем может быть использовано далее.

Объект Promise имеет два основных метода:

  • then: запускает callback-функцию, обрабатывающую результат
  • catch: вызывает callback-функцию, обрабатывающую ошибки

Также у объекта Promise есть другие интересные свойства, которые позволяют создавать цепочки вызовов.

buyCoffee()
  .then(function() {
    return drinkCoffee();
  })
  .then(function() {
    return doWork();
  })
  .then(function() {
    return getTired();
  })
  .then(function() {
    return goToSleep();
  })
  .then(function() {
    return wakeUp();
  });

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

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

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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