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