Цепочка обещания. Resolve () дает странный ответ - PullRequest
0 голосов
/ 09 апреля 2020

ниже код, который я пытаюсь понять:

пример: 1

Promise.resolve('res1')
    .then(Promise.resolve('res2'))
    .then(Promise.resolve('res3'))
    .then(function (result) {
        console.log(result);
    });

Вывод: res1

Но я не в состоянии понять, почему это res1, а не res3. Ниже приведен код, который выполняется, как и ожидалось:

пример: 2

    Promise.resolve('res1')
    .then(function (result1) {
        console.log(result1);
        return Promise.resolve('res2')
    })
    .then(function (result2) {
        console.log(result2);
        return Promise.resolve('res3')
    })
    .then(function (result) {
        console.log(result);
    });

Его вывод:

res1
res2
res3

Как после того, как каждое решение о разрешении передается следующему функция, так что это выглядит нормально, но в примере: 1 - это не тот же процесс, что и в примере: 2, как разрешение и передача строки следующей функции. Так что я не пойму, что за этим стоит. Заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2020

Как после каждого разрешения аргумент передается следующей функции, так что все выглядит нормально -> Неверно, оно не передается. Механизм передачи между обработчиками .then return. Promise.resolve('res2') это просто выражение. Вам нужно return значение этого выражения, чтобы оно было передано следующему обработчику .then.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...