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

Введение

Обещание — это объект, который гарантирует, что какое-то значение будет доступно в будущем. Это «некоторое значение» может быть ожидаемым возвращаемым значением или ошибкой.

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

.тогда()

Объект Promise принимает функцию обратного вызова, которая принимает два аргумента разрешить и отклонить. Эта функция обратного вызова называется функцией-исполнителем. Он использует функцию разрешения, если обещание выполнено успешно, и отклоняет, если нет.

Мы можем использовать then() для обработки промиса в случае успеха. Блок then() будет вызываться при успешном выполнении обещания.

Редактировать код:- Онлайн-код

· Вы можете видеть в приведенном выше примере, что во время выполнения сначала выполняется оператор console.log, т.е. первая частьпечатная строка«Это наша первая часть».

· Затем третья часть, чтобы напечатать в консоли «Это наша третья часть» .

· Затем JavaScript ожидает, пока обещание будет разрешено, и печатает вторую часть, то есть строку "Это будет напечатано через 3 секунды" с логикой внутри then() block, когда он получает ответ через 3 секунды.

Давайте посмотрим на приведенный ниже аналогичный код, который не использует обещание: -

Вы можете заметить в приведенном выше примере, который не использует промис, вместо того, чтобы ждать, пока переменной returnValue будет присвоено строковое значение, т. е. «Это будет напечатано через 3 секунды», JS просто печатает значение переменной returnValue, назначенное изначально, т. е. null.

.поймать()

Мы можем использовать catch() для обработки промиса в случае неудачи. Таким образом, часть catch будет выполнена, если обещание было отклонено. Как показано в примере ниже: -

В приведенном выше примере мы добавили логику для печати сообщения об ошибке в части catch. Эта логика была выполнена, потому что мы использовали reject в функции-исполнителе обещания, чтобы указать, что она не удалась.