Является ли тип возврата .then () обещанием даже без оператора return? - PullRequest
0 голосов
/ 27 ноября 2018

Документация для .then () говорит, что тип возврата затем является обещанием.

Так что мой вопрос, есть ли разница между следующими блоками кода?

var promise1 = new Promise(function(resolve, reject) {
  resolve('Success!');
});

promise1.then(function(value) {
  console.log(value);
  //no return type specified here
});

var promise1 = new Promise(function(resolve, reject) {
  resolve('Success!');
});

promise1.then(function(value) {
  console.log(value);
  return Promise.resolve();
  //the return type here is a resolved promise with undefined value
});

Второй пункт в разделе «возвращаемое значение» документации подсказывает мне, что они одинаковы.

причина, по которой я спрашиваю, заключается в том, что TypeScript, кажется, делает различие между ними, и когда у меня есть тип возврата Promise, я должен использовать второй фрагмент, а не первый

EDIT:

Я выяснил проблему, с которой столкнулся, и не из-за этой проблемы.У меня был следующий код:

return login() //this returns a promise
.then((response: LoginResponse) => {
        if (!response.success) {
          return Promise.reject();
        }
        console.log('Logged In');
        return Promise.resolve(); //I must write this line otherwise I have a TypeError
      });

Это просто потому, что анонимная функция в тогда имеет тип возврата Promise из-за Promise.reject() в блоке if.Это не имеет ничего общего с типом возврата блока .then(), а типом возврата анонимной функции.

...