# Promise

# Описание

  • Promise - специальный объект, который используются для обработки результатов асинхронных операций. Промис хранит своё состояние, текущий результат (если есть) и коллбэки

# Состояния Promise

  • pending - ожидание (выполняется)
  • fulfilled - выполнено успешно
  • rejected - отклонено (выполнено с ошибкой)

# Навешиваемые коллбэки

  • onFulfilled – срабатывают, когда promise в состоянии fulfilled
  • onRejected – срабатывают, когда promise в состоянии rejected
let promise = new Promise(function(resolve, reject) {
	resolve(arg) // => onFulfilled(arg) => .then(arg)  => Promise
	reject(arg)  // => onRejected(arg)  => .catch(arg) => Promise
});

# Объявление

# Promise

// Объявление
let promise = new Promise((resolve, reject) => {
    if (...) {
    	// onResolved()
        resolve('ok');
    } else {
    	// onRejected()
        reject(new Error('Api error')); // аналогично с throw
        throw new Error('Api error');   // аналогично с reject
    }
});
// Использование
promise
    .then(result => {
        console.log(result);
    })
    .catch(error => {
        console.error(error);
        console.error(error.message); 
    })

# Функция

// Объявление
function asyncFunc() {
	const promise = new Promise((resolve, reject) => {
		//
	});

	return promise;
}
// Использование
asyncFunc()
    .then(result => { ... })
    .catch(result => { ... })