Будет много раз, когда вы столкнетесь с вызовом функции в базу данных или стороннюю службу API несколько раз, и этот порядок выполнения должен оставаться неизменным.

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

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