Асинхронность и производительность — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Асинхронность и производительность

2020-10-20 101
Асинхронность и производительность 0.00 из 5.00 0 оценок
Заказать работу

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

Сперва книга начинается с прояснения большей части путаницы с терминологией и подходом вокруг таких вещей как "async", "parallel" и "concurrent" и объясняет в деталях, как применять и как не применять такие вещи в JS.

Затем мы двинемся к изучению функций обратного вызова (callback) как к основному методу обеспечения асинхронности. Но тут мы быстро заметим, что сама по себе функция обратного вызова совершенно недостаточна для современных требований к асинхронной разработке. Мы определим два главных недостатка программирования только с помощью функций обратного вызова: потеря доверия к инверсии управления (IoC) и нехватка заурядной целесообразности.

С целью решить эти два недостатка, ES6 предоставляет два новых механизма (и даже шаблоны): обещания и генераторы.

Обещания — это независимые от времени обертки вокруг "будущего значения (future value)", которые позволяют вам рассуждать о них и составлять их независимо от того, готово ли уже это будущее значение или еще нет. Более того, они эффективно решают проблемы доверия к IoC, маршрутизируя функции обратного вызова посредством доверительного и компонуемого механизма обещаний.

Генераторы предоставляют новый режим выполнения для функций в JS, в соответствии с которым генератор может быть приостановлен в точках с yield и продолжен асинхронно позже. Возможность "приостановки-и-продолжения" позволяет синхронному, последовательно выглядящему коду в генераторе быть обработанным асинхронно за кулисами. Делая так, мы устраняем путаницу с нелинейными, нелокальными переходами в функциях обратного вызова и, таким образом, делаем наш асинхронный код синхронно выглядящим, чтобы он был более осмысленным.

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

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

Глава 5 затрагивает темы, такие как параллелизм программ с помощью Web Workers и параллелизм данных с помощью SIMD, а также техника низкоуровневой оптимизации, как например ASM.js. Глава 6 знакомит с оптимизацией производительности с точки зрения правильных техник оценки производительности, включая то, о каких видах производительности стоит беспокоиться, а какие проигнорировать.

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

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

ES6 и за его пределами

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

Эта книга посвящена как краткосрочным, так и среднесрочным перспективам того, в каком направлении идет язык: не только известные вещи, как ES6, но и предполагаемые вещи за его пределами.

Кроме того, что все книги этой серии описывают состояние JavaScript на момент написания, которое на полпути к внедрению ES6, основной фокус в серии все-таки больше на ES5. Теперь мы хотим обратить наше внимание на ES6, ES7 и...

Поскольку ES6 почти готов на момент написания этих строк, ES6 и за его пределами начинается с того, что делится практическими вещами из пространства ES6 в нескольких ключевых категориях, включая новый синтаксис, новые структуры данных (коллекции) и новые возможности обработки и API. Мы рассмотрим каждую из этих новых возможностей ES6 на различных уровнях детализации, включая рассмотрение деталей, которые затрагиваются в других книгах серии.

Вот некоторые захватывающие вещи в ES6, ждущие вашего с ними ознакомления: деструктурирование (destructuring), значения параметров по умолчанию, символы, сокращенные методы (concise methods), вычисляемые свойства, стрелочные функции (arrow functions), блочная область действия, обещания (promises), генераторы, итераторы, модули, прокси, слабосвязанные коллекции ключ-значение (weakmaps) и многое, многое другое! Ну и ну, ES6 производит огромное впечатление!

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

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

У JavaScript блестящее будущее. Разве сейчас не то самое время, чтобы начать изучать его!?

Обзор

Серия YDKJS посвящена утверждению, что все разработчики на JS могут и должны изучить все составляющие этого могучего языка. Ни одно мнение, никакая надежда на фреймворк и ни один дедлайн проекта не должны быть извинением за то, почему вы так и не изучили и не пришли к глубокому пониманию JavaScript.

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

"Вы не знаете JS" — это не про критику и издевательство. Книга про то, что все мы, включая меня, должны найти общий язык. Изучение JavaScript — это не конечная цель, а процесс. Мы не знаем JavaScript, пока что. Но мы узнаем!

 


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.