.then()的documentation表示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
});
'return value' segment of the documentation中的第二点向我暗示它们是相同的。
我问的原因是TypeScript似乎区分了两者,当我有Promise的返回类型时,我必须使用第二个代码段而不是第一个代码段
编辑:
我发现了我遇到的问题,而不是因为这个问题。 我有以下代码:
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
});
这仅仅是因为中的匿名函数由于if块中的Promise.reject()
而具有Promise的返回类型。它与.then()
块的返回类型无关,而与匿名函数的返回类型无关。