Особенность объекта promise в том, что промис
function executor (resolve, reject) {
asyncCallback () {
resolve(data);
reject('Описание ошибки');
}
}
const objPromise = new Promise (executor);
objPromise
.then(data => console.log(data))
.catch( err => consoloe.log(err ))
mini-test
Ваш ответ: ожидается
При создании объекта promise в качестве аргумента выступает некоторая функция - исполнитель. Особенностью executor является наличие 2-х обязательных аргументов которые обязаны быть вызваны в теле функции. Исторически первый параметр называют resolve, а второй reject. Но имена не имеют значения, имеет значение только порядок аргументов. Эти аргументы являются callback функциями. К счастью нам не надо описывать тело этих callback. Нам необходимо вызвать их в теле функции и передать
(resolve, reject)
function executor(one, two) {
if (true) {
return one('All right!')
one === resolve
}
return two('Error in IF condition!')
two === reject
}
Результат выполнения аргумента попадает в метод .then() или .catch().
objPromise
.then(data => console.log(data))
'All right!'
.catch( err => consoloe.log(err))
Оба метода выстраивают цепочку, т.е. результат вычисления обязательно будет получен, каким бы этот результат не был.
Метод может повторяться, выстраивая цепочки.
А метод .catch() прописан один раз, в конце всей цепочки. Сatch выполнится только если возникнет ошибка внутри аргумента promise (функции - executor) или внутри вычислений метода .then()
objPromise
.then(data => console.log(dat))
.catch( err => consoloe.log(err))
Error:
'Promise (rejected:
ReferenceError: consoloe is not defined)'
function executor (resolve, reject) {
if('все хорошо') {
return resolve (
'данные для Promise'
)
} else {
return reject (
`описание причины
по которой
данные не получены`
)
}
}
See the Pen first promise by Gennadiy ( @Gorbulin) on CodePen.
Promise.race[prm1, prm2, ...].then(data => console.log(data), err => console.log(err))
Выполнится первый resolve или reject промис из массива
Пример 1
See the Pen promise race by Gennadiy ( @Gorbulin) on CodePen.
Пример 2
See the Pen rase promise by Gennadiy ( @Gorbulin) on CodePen.
Promise.all[prm1, prm2, ...].then(data => console.log(data))
Выполнение произойдет только при resolve всх элементов массива промисов
Пример 1
See the Pen promise all by Gennadiy ( @Gorbulin) on CodePen.
Пример 2
See the Pen all promise by Gennadiy ( @Gorbulin) on CodePen.