You don't know js(up & going)
Асинхронность и производительность
Download 424.95 Kb. Pdf ko'rish
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling