В отношении этих великих двух источников: NZakas - Возвращение Promises в Promise Chains и 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
. Даже предложение здесь путается.
Не могли бы вы объяснить мне, что именно здесь происходит? Я полностью смущен этой концепцией.