Документация для .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()
, а типом возврата анонимной функции.