В этой серии статей об асинхронном Javascript я поделюсь с вами своими знаниями по этой теме.

Javascript — это однопоточный язык программирования, что означает, что он плохо справляется с многозадачностью. Он выполняет код построчно, и если функция зависит от результата другой функции, она должна ждать, пока другая функция не вернет результат. В нашу эпоху, когда наш компьютер имеет несколько ядер, не рекомендуется ждать, пока завершится какая-то другая задача.

Обработка асинхронной операции в javascript — очень важная задача в javascript, потому что каждое приложение выполняет какую-то асинхронную операцию, и для этого javascript предусмотрены разные способы обработки асинхронной операции.

Обратные вызовы

Обратный вызов — это самый старый и простой способ обработки асинхронной операции в javascript, а функция обратного вызова — это функция, которая передается в качестве параметра другой функции и которая будет выполняться позже.

Не обязательно, чтобы обратный вызов всегда был асинхронным, он также может быть синхронным.

Пример: функция setTimeout() в javascript, она принимает два параметра, первый — это функция обратного вызова, а другой — продолжительность времени, в этом случае функция обратного вызова будет выполняться по истечении заданного времени и до тех пор, пока нормальный поток выполнения кода не продолжится и не будет блокировки кода.

В этом примере вы должны быть удивлены выводом кода, причина этого вывода в том, что javascript не выполнил код в том порядке, в котором мы хотели. Javascript не ждал 5 секунд, чтобы выполнить функцию setTimeout(). Причина такого поведения javascript в том, что мы не можем вызывать функции одну за другой и ожидать, что они будут выполняться синхронно. Обратные вызовы полезны, когда мы хотим выполнить код после завершения выполнения какого-либо другого кода.

Создать обратный вызов

Я создал функцию fetchUser для имитации получения имени пользователя с сервера. Эта функция принимает два аргумента: имя пользователя и функцию обратного вызова, а функция обратного вызова определяется внутри функции setTimeout, в которой мы передаем имя пользователя в качестве параметра, а после этого мы вызываем функцию fetchUser и передаем параметр userName и вызываем функцию обратного вызова, в которой мы печатаем имя пользователя.

Ад обратного звонка

В приведенном выше фрагменте кода после выборки пользователя, если вы хотите получить адрес пользователя, затем контакт пользователя и т. д. Для этого мы должны вызвать fetchAddress внутри fetchUser, затем для контакта мы должны вызвать fetchContact внутри fetchAddress. Это называется адом обратных вызовов, когда мы накладываем методы друг на друга, и их трудно читать, а писать код не рекомендуется.

В следующем блоге я объясню вам, как справиться с адом обратных вызовов в javascript.