
В JavaScript обещание — это объект, который представляет возможное завершение (или сбой) асинхронной операции и ее результирующее значение. Промисы используются для обработки асинхронных операций, таких как выполнение запросов API, чтение и запись в базы данных и выполнение других операций ввода-вывода.
Обещания имеют три состояния:
- В ожидании: исходное состояние. Обещание не выполняется и не отвергается.
- Выполнено: состояние, когда обещание выполнено со значением. Это «успешное» состояние.
- Отклонено: Состояние, когда обещание отклонено по причине. Это состояние «неудачи».
Обещания создаются с помощью конструктора Promise. Конструктор принимает один аргумент — функцию, называемую «исполнитель». Функция-исполнитель принимает два аргумента: resolve и reject. resolve — это функция, которая вызывается, когда обещание выполнено, а reject — это функция, которая вызывается, когда обещание отклоняется.
Вот пример создания промиса, который выполняется с задержкой в 1 секунду:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Success!");
}, 1000);
});
Как только обещание создано, вы можете использовать метод .then() для обработки выполненного состояния и метод .catch() для обработки отклоненного состояния.
Вот пример использования .then() и .catch() с объектом myPromise, созданным выше:
myPromise
.then(result => {
console.log(result); // "Success!"
})
.catch(error => {
console.error(error); // This will not be called in this example
});
Промисы — это мощный инструмент для управления асинхронным кодом в JavaScript, поскольку они позволяют вам писать код, более удобный для чтения и сопровождения, чем традиционные подходы, основанные на обратных вызовах.