You don't know js(up & going)


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


Download 424.95 Kb.
Pdf ko'rish
bet51/53
Sana08.11.2023
Hajmi424.95 Kb.
#1757840
1   ...   45   46   47   48   49   50   51   52   53
Bog'liq
You don\'t know JS(up & going)

Асинхронность и производительность
Первые три книги этой серии фокусируются на внутренней механике языка, а
четвертая книга делает небольшое отступление, чтобы рассмотреть шаблоны для
управления асинхронной разработкой, вдобавок к механике языка.
Асинхронность не только критически важна для быстродействия наших
приложений, она всё больше становится *тем самым* критическим фактором для
легкости написания и обслуживания программы.
Сперва книга начинается с прояснения большей части путаницы с терминологией
и подходом вокруг таких вещей как "async", "parallel" и "concurrent" и объясняет в
деталях, как применять и как не применять такие вещи в JS.
Затем мы двинемся к изучению функций обратного вызова (callback) как к
основному методу обеспечения асинхронности. Но тут мы быстро заметим, что
сама по себе функция обратного вызова совершенно недостаточна для
современных требований к асинхронной разработке. Мы определим два главных
недостатка программирования только с помощью функций обратного вызова:
потеря доверия к *инверсии управления* IoC и нехватка заурядной
целесообразности.
С целью решить эти два недостатка, ES6 предоставляет два новых механизма (и
даже шаблоны): обещания и генераторы.
Обещания — это независимые от времени обертки вокруг "будущего значения
(future value)", которые позволяют вам рассуждать о них и составлять их
независимо от того, готово ли уже это будущее значение или еще нет. Более того,
они эффективно решают проблемы доверия к IoC, маршрутизируя функции
обратного вызова посредством доверительного и компонуемого механизма
обещаний.
Генераторы предоставляют новый режим выполнения для функций в JS, в
соответствии с которым генератор может быть приостановлен в точках с `yield`
и продолжен асинхронно позже. Возможность "приостановки-и-продолжения"
позволяет синхронному, последовательно выглядящему коду в генераторе быть
обработанным асинхронно за кулисами. Делая так, мы устраняем путаницу с
нелинейными, нелокальными переходами в функциях обратного вызова и, таким
образом, делаем наш асинхронный код синхронно выглядящим, чтобы он был
более осмысленным.
Именно эта комбинация обещаний и генераторов и "превращается" в наш самый
эффективный шаблон асинхронного кодирования в JavaScript в настоящий
момент. Вообще-то, многие из будущих усовершенствований в асинхронности
появятся в ES7 и позже будут обязательно построены на этой основе. Если


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

Do'stlaringiz bilan baham:
1   ...   45   46   47   48   49   50   51   52   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling