admin管理员组文章数量:814986
函数中的返回承诺给打字稿类型错误
我有一个方案,可以检查是否需要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 };
}
本文标签: 函数中的返回承诺给打字稿类型错误
版权声明:本文标题:函数中的返回承诺给打字稿类型错误 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1715171076a821908.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论