Обещание обратного вызова, возвращая обещания

Что касается этих великих двух источников: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Исполнитель. Даже предложение здесь сбивает с толку.

Не могли бы вы объяснить мне, что именно здесь происходит? Я полностью смущен этой концепцией.

Ответы на вопрос(4)

Ваш ответ на вопрос