Узнайте больше о promises JavaScript: from zero to hero за 25 тестов

Узнайте больше о promises JavaScript: from zero to hero за 25 тестов

От автора: я думаю, что лучший способ объяснить JavaScript promise — это примеры. Какой лучший, самодостаточный и самый короткий способ написать пример? Тест! Для тех, кто никогда не видел оболочку теста Жасмин, it(‘…’, (done) => {…}) — это тест, а done — это функция, которая должна выполняться при завершении асинхронного теста.

Для тестов применяются следующие правила:

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

Некоторые тесты содержат ожидания. Если тест успешен, ожидания верны.

Другие тесты основаны на обратном вызове done(). Если done () не вызывается, тест не пройден.

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

Тесты

Начнем с основ Promise:

Похоже, что когда вы вызываете resolve(), выполняется обратный вызов первого then(…). Если вы вызываете reject() или генерируется ошибка, catch(), или выполняется обратный вызов второй then(…).

Кроме того, исполнитель promise запускается синхронно. Это означает, что promise — это способ обработки асинхронного кода, а не выполнения задач в асинхронных потоках. Если вы хотите выполнить код JavaScript вне основного потока, используйте Web Workers.

Давайте рассмотрим подробнее, какие существуют функции then(…) и catch(), и что означает «цепочки promise»:

Хорошо, но что такое Promise.resolve() и Promise.reject()? Давай выясним!

Цепочки promise или создание новых

Хотя new Promise(…) является способом создания promise, вам следует избегать его использования. Как правило функции / библиотеки возвращают promise, поэтому вам следует продолжать promise, а не создавать новые:

Но когда следует использовать new Promise(…)? Когда вы хотите перейти от обратного вызова интерфейса к promise. Например:

Параллельное выполнение

Цепочка promises — это хорошо, но что насчет выполнения асинхронных операций параллельно? Ниже приведено все, что вам нужно знать:

Синтаксис

Синтаксис promise немного сложнее по сравнению со стандартным синтаксисом синхронного кода. Это правда, что, создавая цепочки promises, мы делаем код более читаемым, но это можно улучшить. Новый синтаксис await / async делает использование promise столь же простым, как и написание синхронного кода.

Синхронные функции

И напоследок: при разработке функций вы должны решить, является ли она синхронной или нет. Не возвращайте promise только потому, что «вы никогда не знаете». Когда это возможно, используйте «обычные» синхронные функции. Все тесты вы можете найти здесь, на JSFiddle.

Это все! Надеюсь, вам понравилась эта статья.

Автор: Andrea Koutifaris

Источник: //medium.freecodecamp.org/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: