Promise (промис) - это объект, который представляет собой результат асинхронной операции и может иметь одно из трех состояний: ожидание (pending), выполнено (fulfilled) или отклонено (rejected). Промисы предоставляют более удобный способ работы с асинхронным кодом, чем callback-функции, поскольку позволяют избежать callback hell.
Промисы решают проблему callback hell, позволяя выполнять асинхронные операции последовательно или параллельно, используя цепочки вызовов. Каждый промис возвращает другой промис, позволяя выполнять операции последовательно и обрабатывать результаты каждой операции в цепочке вызовов. Это делает код более понятным и легко читаемым.
Например, вместо вложенных колбэков, можно использовать следующую цепочку вызовов с промисами:
loadDataFromServer()
.then(processData)
.then(saveResult)
.then(() => {
console.log("All done!")
})
.catch((error) => {
console.error("Error:", error)
})
Здесь функция loadDataFromServer
возвращает промис, который затем передается в метод then
. Метод then
выполняет операцию и возвращает новый промис, который передается в следующий метод then
. Если операция завершается неудачно, то промис переходит в состояние “отклонено” (rejected) и вызывается метод catch
, который обрабатывает ошибку.
Таким образом, промисы обеспечивают более эффективный способ работы с асинхронным кодом, позволяя избежать callback hell и обрабатывать ошибки более эффективно.