【发布时间】:2019-04-11 00:07:32
【问题描述】:
我知道有人问过类似的问题。但我会解释其中的区别。
我有一个名为login() 的函数需要返回一个用户。该函数调用另一个函数,该函数调用我的后端。 login() 函数需要在返回用户之前等待承诺完成。问题是,如果我将返回值放在then() 中,它会说:
[ts] 声明类型既不是“void”也不是“any”的函数必须 返回一个值。
需要返回,因为调用它的函数需要用户的JWT。
简化代码:
login(user: User): User {
this.user = user;
//in between I fill some fields for the user
this.loginPromise().then(user => {
return user;
})
.catch(err => {
console.log(err);
//it doesn't make a difference wether I return a user here or not
}
loginPromise(): Promise<{}> {
var promise = new Promise(function(resolve, reject) {
this.restProvider.login(this.user)
.subscribe(result => {
const jwt = result.headers.get('JWT');
const config = { ... result.body };
if(config['result'] != 'failed'){
this.user.$JsonWebToken = jwt;
this.user.$passwordIsValid = true;
this.user.$usernameIsValid = true;
resolve(this.user);
}
}, err => {
console.log("error: " + err);
reject(err);
});
})
return promise;
}
【问题讨论】:
标签: angular rest typescript ionic-framework promise