Обещание обратного вызова, возвращая обещания
Что касается этих великих двух источников:NZakas - Возвращение обещаний в цепочке обещаний а такжеMDN PromisesЯ хотел бы спросить следующее:
Каждый раз, когда мы возвращаем значение из обработчика выполнения обещания, как это значение передается новому обещанию, возвращенному из того же обработчика?
Например,
let p1 = new Promise(function(resolve, reject) {
resolve(42);
});
let p2 = new Promise(function(resolve, reject) {
resolve(43);
});
let p3 = p1.then(function(value) {
// first fulfillment handler
console.log(value); // 42
return p2;
});
p3.then(function(value) {
// second fulfillment handler
console.log(value); // 43
});
В этом примереp2
это обещание.p3
также обещание, вытекающее изp1
Исполнитель. тем не мениеp2 !== p3
, Вместоp2
каким-то волшебным образом разрешает43
(как?) и это значение затем передаетсяp3
Исполнитель. Даже предложение здесь сбивает с толку.
Не могли бы вы объяснить мне, что именно здесь происходит? Я полностью смущен этой концепцией.