Асинхронная обработка и оптимизация [Кайл Симпсон] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Async & Performance

Kyle Simpson

ВЫ НЕ ЗНАЕТЕ

АСИНХРОННАЯ
ОБРАБОТКА
ОПТИМИЗАЦИЯ
КАЙЛ СИМПСОН

ББК 32.988.02-018
УДК 004.738.5
С37

Симпсон К.
С37 {Вы не знаете JS} Асинхронная обработка и оптимизация. — СПб.:
Питер, 2019. — 352 с. — (Серия «Бестселлеры O’Reilly»).
ISBN 978-5-4461-1313-2
Каким бы опытом программирования на JavaScript вы ни обладали, скорее всего,
вы не понимаете язык в полной мере. Это лаконичное, но при этом глубоко продуманное руководство посвящено новым асинхронным возможностям и средствам
повышения производительности, которые позволяют создавать сложные одностраничные веб-приложения и избежать при этом «кошмара обратных вызовов».
Как и в других книгах серии «Вы не знаете JS», вы познакомитесь с нетривиальными особенностями языка, которых так боятся программисты. Только вооружившись знаниями, можно достичь истинного мастерства.

16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.)

ББК 32.988.02-018
УДК 004.738.5
Права на издание получены по соглашению с O’Reilly. Все права защищены. Никакая часть
данной книги не может быть воспроизведена в какой бы то ни было форме без письменного
разрешения владельцев авторских прав.
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность материалов, ссылки на
которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на
интернет-ресурсы были действующими.

ISBN 978-1491904220 англ.

ISBN 978-5-4461-1313-2

Authorized Russian translation of the English edition of You
Don’t Know JS: Async & Performance (ISBN 9781491904220)
© 2015 Getify Solutions, Inc.
This translation is published and sold by permission of O’Reilly
Media, Inc., which owns or controls all rights to publish and sell
the same
© Перевод на русский язык ООО Издательство «Питер»,
2019
© Издание на русском языке, оформление ООО Издательство «Питер», 2019
© Серия «Бестселлеры O’Reilly», 2019

Оглавление

Предисловие. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Задача . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
О книге. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Типографские соглашения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Использование программного кода примеров . . . . . . . . . . . . . . 16
От издательства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Глава 1. Асинхронность: сейчас и потом. . . . . . . . . . . . . 18
Блочное строение программы. . . . . . . . . . . . . . . . . . . . . . . . . . 19
Асинхронный вывод в консоль. . . . . . . . . . . . . . . . . . . . . . . 22
Цикл событий. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Параллельные потоки. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Выполнение до завершения . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Параллельное выполнение. . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Отсутствие взаимодействий. . . . . . . . . . . . . . . . . . . . . . . . . 36
Взаимодействия. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Кооперация. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Задания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Упорядочение команд. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Итоги. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Глава 2. Обратные вызовы . . . . . . . . . . . . . . . . . . . . . . . . 52
Продолжения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Последовательное мышление. . . . . . . . . . . . . . . . . . . . . . . . . . 55

6

Оглавление

Работа и планирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Вложенные/сцепленные обратные вызовы. . . . . . . . . . . . . . 59
Проблемы доверия. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
История о пяти обратных вызовах. . . . . . . . . . . . . . . . . . . . . . . 66
Не только в чужом коде. . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Попытки спасти обратные вызовы. . . . . . . . . . . . . . . . . . . . . . . 71
Итоги. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Глава 3. Обещания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Что такое обещание? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Будущее значение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Событие завершения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
События обещаний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Утиная типизация с методом then()(thenable) . . . . . . . . . . . . . . 93
Доверие Promise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Слишком ранний обратный