К постам Опубликовано: 2016-11-13

Понимание синхронного и асинхронного JavaScript – Часть 1

Синхронные и асинхронные путаете понятия в JavaScript, особенно для начинающих. Две или более вещи синхронно, когда они происходят одновременно (синхронно), и асинхронный, когда они не (не синхронизированы). 15 методов JavaScript для манипуляции dom для веб-разработчиков

 15 методов JavaScript для манипуляции dom для веб-разработчиков .

Как веб-Разработчик, вам часто нужно работать с моделью dom, объектная модель, которая используется... Хотя эти определения легко принять, это на самом деле сложнее, чем кажется. Мы должны учитывать, что именно синхронизировать, а что нет. Вы, вероятно, называете нормальной функции в JavaScript синхронно, да? И если это что-то вроде settimeout() или AJAX, которые вы работаете с, вы будете ссылаться на него как асинхронный, да? Что если я скажу вам, что асинхронная таким образом? Чтобы объяснить почему, нужно обратиться к мистеру х за помощью. Сценарий 1 – мистер х пытается синхронность Вот настройки: Мистер х-это тот, кто может ответить на сложные вопросы, и выполнить любую поставленную задачу.

Единственный способ связаться с ним через телефонный звонок. Какой бы вопрос или задание вы получили, чтобы попросить помощи мистера Икс к ее выполнению; вы называете его. Мистер х дает ответ или выполняет задачу прямо сейчас, и позволяет вам знать, это делается. Ты положил трубку, чувствуя контента и выйти на фильм. Что ты только что проведена была синхронной (туда и обратно) общение с мистером Икс. Он слушал, как вы задавали ему вопрос, а ты слушал, когда он отвечал на него. Контактный itScenario 2 – г-н x не доволен синхронность Поскольку г-н x является настолько эффективным, он начинает получать гораздо больше вызовов.

Так что же происходит, когда вы звоните ему, но он уже занят, разговаривает с кем-то еще? Вы не сможете задать ему свой вопрос – пока он не волен принять Ваш звонок. Все вы услышите сигнал "занято". Так что может г-н x сделал для борьбы с этим? Вместо того, чтобы принимать звонки прямо: Мистер х нанял нового парня, Г-Н М и дает ему автоответчик для абонентов, чтобы оставлять сообщения. Работа Г-М заключается в том, чтобы передать сообщение от автоответчика с мистером х, когда он знает, г-н x имеет полностью закончена обработка всех предыдущих сообщений и уже взять новый. Так что теперь, когда вы называете его, вместо того, чтобы получать сигнал "занято", вы получаете возможность оставить сообщение для мистера х, то ждать его вам перезвонить (ни один фильм еще не раз). Как только г-н x сделал со всеми в очередь сообщений, которые он получил раньше, чем у вас, он будет смотреть на Ваш вопрос и свяжемся с Вами, чтобы дать вам ответ. Сейчас здесь лежит вопрос: были ли действия пока синхронным или асинхронным? Это смешанное. Когда вы оставили свое сообщение, мистер х не слушал его, поэтому подобное общение было асинхронным.

Но, когда он ответил, вы были там, слушая, что делает возвращение синхронной связи. Я надеюсь, что сейчас вы получили лучшее понимание того, как синхронность воспринимается в плане общения. Время, чтобы привести в JavaScript. В JavaScript – Это Асинхронный Язык Программирования Когда кто-то этикетки код JavaScript, что они имеют в виду в целом, как вы можете оставить сообщение для нее, а не ваш звонок блокируется сигнал "занято". Функция звонков не непосредственно в JavaScript, они буквально через сообщения. JavaScript использует очередь Сообщений, где проходят входящих сообщений (или событий). Событие-петля (диспетчер Сообщений) последовательно отправляет сообщения в стек вызовов, где соответствующие функции сообщения укладываются в рамки (функции заданы параметры и переменных) для исполнения. Стек вызовов содержит рамки первоначальной функции, и любые другие рамки для функций, вызываемых через вложенные вызовы на вершине .

Пин-код тогда, когда сообщение присоединяется к очереди, он ждет, пока стек вызовов пуст все кадры из предыдущего сообщения, и, когда это событие-цикл извлекает Предыдущее сообщение и добавляет в соответствующих периодах текущего сообщения в стеке вызовов. Сообщение вновь ждет до тех пор, пока стек вызовов становится пустым собственных соответствующих периодах (т. е. выполнение всех функций сложены более), затем удаляется. Рассмотрим следующий код: функция Foo(){} функции Bar(){ фу(); } функция baz(){ бар(); } баз(); Функции запуска баз() (в последней строке фрагмента кода), по которой сообщения будут добавлены в очередь, и когда событие-петля поднимает его вверх по стеку вызовов начинается штабелируя рамки для baz(), бар () и Foo() на соответствующих этапах исполнения. Контактный itOnce Выполнение функций по одному, их рамы удаляются из стека вызовов, в то время как сообщение по-прежнему ждут в очереди, пока баз() извлекается из стека. Пин itRemember, вызовы функций являются не непосредственно в JavaScript, они сделаны с помощью Сообщений.

Так что когда вы слышите кого-то сказать, что JavaScript-это асинхронный язык программирования, предположить, что речь идет о ее причине-в “автоответчик”, и как вы оставлять сообщения. Но насчет конкретных асинхронных методов? До сих пор я не коснулся API, таких как функции settimeout() и AJAX, это те, которые специально называют асинхронным. Почему? Важно понимать, что именно синхронным или асинхронным. В JavaScript, с помощью события и мероприятия-петли, могут практиковать асинхронной обработки Сообщений, но это не значит, что все в JavaScript является асинхронным.

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

Ожидание не является идеальным во всех сценариях. Что если после оставления сообщения, а не ждать, вы можете оставить для кино? Что делать, если функция может выйти на пенсию (очистка стека вызовов), и его сообщения могут быть удалены из очереди еще до задания функции завершения? Что если вы можете иметь код выполняется асинхронно? Это где такие API, как через settimeout() и AJAX в эту картину, и то, что они делают, это... подожди, я не могу объяснить это, не возвращаясь к мистеру х, который мы увидим во второй части этой статьи. Следите за обновлениями. Больше