Я уверен, что многие люди задавали себе вопрос во время этой пандемии Covid-19: «Как я могу использовать свое время во время этого закрытия?» Некоторым нравится сидеть и смотреть телевизор, в то время как другие могут подписываться на онлайн-сертификаты, на которые у них никогда не было времени, которые помогут им по прошествии этого времени.

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

Синхронные операции блокируют набор инструкций до тех пор, пока задача не будет завершена, в то время как асинхронные операции могут выполняться без блокировки других операций. Я уверен, вы говорите, что все не может быть так просто, и вы будете абсолютно правы! Давайте копнем глубже.

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

Когда мы думаем об асинхронности, в вашем распоряжении есть пара инструментов: обратные вызовы, обещания и async / await. Проще говоря, давайте начнем с асинхронного обратного вызова!

1. Асинхронный обратный вызов: асинхронные обратные вызовы позволяют вам вызывать функцию обратного вызова, которая отправляет запрос базы данных (и любые другие вложенные обратные вызовы) в ваше приложение, где оно ожидает ответа от базы данных, освобождая остальная часть вашего кода, чтобы продолжить работу. На ум приходит одна функция, которая может помочь вам в этом процессе: setTimeout (). Хорошие вещи не всегда так совершенны, хотя правильные. Это может быстро стать довольно запутанным, что приведет нас к следующей теме, promises!



2. Обещание: позволив программистам очистить свой синтаксис и написать код, который работал асинхронно, но выглядел синхронно, на помощь пришли такие библиотеки, как Q и ​​Bluebird. С обещанием, вместо того, чтобы объединять все зависимости в один блок кода и отправлять все это браузеру, мы можем разделить их. Мы можем отправить асинхронный обратный вызов в браузер и использовать .then () для удержания всех других зависимостей в стороне, выполняя их только после того, как наш асинхронный обратный вызов вернется и запустится. В результате получился код, который было легче читать и быстрее запускать. Обновления, которые меняют правила игры, конечно же, предоставили разработчикам еще более совершенные инструменты в обновлениях ES6. Теперь мы познакомились с async / await.



3. Async / await: обещания по-прежнему оставляли асинхронный код немного хрупким. Проще говоря, async / await позволяет вашему коду по-прежнему использовать обещания при написании кода, который выглядит и ощущается синхронным, но очищает синтаксис и делает его более элегантным.



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

Итак, если компьютеры могут использовать свое время, как вы проводите свое время в эти трудные моменты, которые мы переживаем во время этой пандемии?

ресурс: https://www.hongkiat.com/blog/synchronous-asynchronous-javascript/