函数中的返回承诺给打字稿类型错误"/>
函数中的返回承诺给打字稿类型错误
我有一个方案,可以检查是否需要userWhiteListing。如果不是,则调用allowUserToLogin函数。如果是,则检查特定用户是否被列入白名单。如果未列入白名单,则抛出错误,否则调用allowUserToLogin函数。
我正在寻找一种更好的承诺方式,而不是异步等待方式。
这里是一个示例示例。
public function sample():Promise<{ session: string , url: string }> {
return this.userWhiteListingRqd().then((whiteListingRqd) => {
if(whiteListingRqd) {
return this.isUserWhiteListed().then((userWhiteListed) => {
if(!userWhiteListed) {
throw new Error("error");
}
// Here if user whitelisted then it will go to allowUserToLogin
// But here typescript throws error Promise<void> cannot be assignable
// to Promise<session: string , url:string>
});
}
});
return this.allowUserToLogin().then(() => {
return { session, url };
});
}
private function userWhiteListingRqd(): Promise<boolean> {
// returns boolean value
}
private isUserWhiteListed(): Promise<boolean> {
// returns boolean value
}
我仍处于学习阶段。有没有更好的方法可以使用promise处理这种情况。
任何帮助将不胜感激。
回答如下:在许多情况下,使用异步等待可以清除大量承诺的代码。
public async function sample(): Promise<{ session: string; url: string }> {
if (await this.userWhiteListingRqd() && !(await this.isUserWhiteListed()) {
throw new Error("The user must be whitelisted but is not.");
}
await this.allowUserToLogin();
return { session, url };
}
更多推荐
函数中的返回承诺给打字稿类型错误
发布评论