Должен ли. Затем вернуть последнее обещание в теле функции?

1

Таким образом, вопрос довольно прямо вперед - должно .then вернуть последнее обещание внутри тела функции?

Например:

Promise.resolve().then(function() {
  Promise.resolve(1)
  Promise.resolve(2)
}).then(function(val) {
  return val;
})

Должно ли оно возвращать последнее значение (2), когда обещание разрешается?

Я работаю с некоторым устаревшим кодом, и эта конструкция довольно распространена среди некоторых модулей, но она не работает.

  • 0
    Неясно, что этот код должен делать.
  • 1
    Ваш код не имеет особого смысла, но вам нужно возвратить somethign от первого , then так , что он будет решать на val второго then . Поэтому, если вы напишите return Promise.resolve(2) тогда val будет 2 , а Promise.resolve(1) будет оборванным Promise, который не является частью цепочки. Не совсем понятно, что вы хотите спросить с помощью этого произвольного примера.
Показать ещё 2 комментария
Теги:

2 ответа

1

Это не должно работать, потому что первое затем возвращает обещание неопределенного.

Возможно, вам стоит взглянуть на Promise.all() https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

0

Если .then возвращает последнее обещание внутри тела функции?

Нет. Функция ( в том числе then обратного вызова) должна возвращать все обещания внутри своего тела. То есть, если вы явно не хотите игнорировать некоторые из них.

Конечно, функция может возвращать только одно значение, поэтому оно может только вернуть одно обещание. Если вы делаете несколько вещей, делайте их один за другим и связываете свои обещания или делаете их сразу, а затем выполняете обещание, которое ждет всех результатов с помощью Promise.all.

Также обратите внимание, что .then(function(val) { return val; }) бессмысленна и должна быть отброшена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню