В этой статье мы поговорим об одной из наиболее обсуждаемых концепций в JavaScript, а именно об обещаниях, и о том, как она способствует асинхронной природе JavaScript.
Введение
Обещание — это объект, который гарантирует, что какое-то значение будет доступно в будущем. Это «некоторое значение» может быть ожидаемым возвращаемым значением или ошибкой.
Это позволяет JavaScript обрабатываться асинхронно, поскольку он может ожидать возврата некоторого значения и впоследствии выполнять определенную логику. Под асинхронностью мы подразумеваем, что он может двигаться дальше по коду и выполнять часть, где ответ ожидается позже, обрабатывая обещание, когда оно возвращает значение.
.тогда()
Объект Promise принимает функцию обратного вызова, которая принимает два аргумента разрешить и отклонить. Эта функция обратного вызова называется функцией-исполнителем. Он использует функцию разрешения, если обещание выполнено успешно, и отклоняет, если нет.
Мы можем использовать then() для обработки промиса в случае успеха. Блок then() будет вызываться при успешном выполнении обещания.
Редактировать код:- Онлайн-код
· Вы можете видеть в приведенном выше примере, что во время выполнения сначала выполняется оператор console.log, т.е. первая частьпечатная строка«Это наша первая часть».
· Затем третья часть, чтобы напечатать в консоли «Это наша третья часть» .
· Затем JavaScript ожидает, пока обещание будет разрешено, и печатает вторую часть, то есть строку "Это будет напечатано через 3 секунды" с логикой внутри then() block, когда он получает ответ через 3 секунды.
Давайте посмотрим на приведенный ниже аналогичный код, который не использует обещание: -
Вы можете заметить в приведенном выше примере, который не использует промис, вместо того, чтобы ждать, пока переменной returnValue будет присвоено строковое значение, т. е. «Это будет напечатано через 3 секунды», JS просто печатает значение переменной returnValue, назначенное изначально, т. е. null.
.поймать()
Мы можем использовать catch() для обработки промиса в случае неудачи. Таким образом, часть catch будет выполнена, если обещание было отклонено. Как показано в примере ниже: -
В приведенном выше примере мы добавили логику для печати сообщения об ошибке в части catch. Эта логика была выполнена, потому что мы использовали reject в функции-исполнителе обещания, чтобы указать, что она не удалась.