根据 Angular 中订阅的返回数据为变量赋值。 (可能吗 ?)
Assign value to the variable based on returning data from the subscribe in Angular . (Is it possible ?)
somefunction(){
isUserLoggedin(): boolean {
this.isUserInDB().subscribe((result: any) => {
if (result.code === 200) {
return true;
}
});
return false;
}
isUserInDB():此 API 从本地存储获取令牌,如果用户存在于数据库中则 returns 200 或如果用户存在 returns 404数据库中不存在(有人正在尝试 his/her 自己的令牌。)
在此我总是得到 false 我知道因为首先执行 return false 然后调用 subscribe 方法。所以我想知道是否存在任何其他方式,或者我只是做了一些额外的事情?
因为 this.isUserInDB()
是异步的 isUserLoggedin
将始终 return false。你可以做的是 return observable 而不是布尔值,并在你调用这个函数的地方处理它:
isUserLoggedin(): Observable<any> { // replace any with your type
return this.isUserInDB();
}
如果您想根据用户登录执行一些逻辑,您可以订阅此功能并执行您的任务:
isUserLoggedIn.subscribe((result: any) => {
if (result.code === 200) {
// Your code
}
理想情况下,在您的登录流程中,您应该将用户的登录状态存储在某些服务中 return 相同。
定义class的一个属性并初始化为false:
isUserInDb = false
创建组件时,如果结果状态为成功,则将 属性 更改为 true:
ngOnInit() {
this.isUserInDB().subscribe((result: any) => {
if (result.code === 200) {
this.isUserInDb = true;
}
});
}
我对此的看法是同步它,感谢 async/await
async isUserLoggedin(): Promise<boolean> {
const result = await this.isUserInDB().pipe(first()).toPromise();
if (result.code === 200) {
return true;
} else {
return false;
}
}
用法:
async somefunction(): Promise<void> {
const logged = await this.isUserLoggedin();
}
somefunction(){
isUserLoggedin(): boolean {
this.isUserInDB().subscribe((result: any) => {
if (result.code === 200) {
return true;
}
});
return false;
}
isUserInDB():此 API 从本地存储获取令牌,如果用户存在于数据库中则 returns 200 或如果用户存在 returns 404数据库中不存在(有人正在尝试 his/her 自己的令牌。)
在此我总是得到 false 我知道因为首先执行 return false 然后调用 subscribe 方法。所以我想知道是否存在任何其他方式,或者我只是做了一些额外的事情?
因为 this.isUserInDB()
是异步的 isUserLoggedin
将始终 return false。你可以做的是 return observable 而不是布尔值,并在你调用这个函数的地方处理它:
isUserLoggedin(): Observable<any> { // replace any with your type
return this.isUserInDB();
}
如果您想根据用户登录执行一些逻辑,您可以订阅此功能并执行您的任务:
isUserLoggedIn.subscribe((result: any) => {
if (result.code === 200) {
// Your code
}
理想情况下,在您的登录流程中,您应该将用户的登录状态存储在某些服务中 return 相同。
定义class的一个属性并初始化为false:
isUserInDb = false
创建组件时,如果结果状态为成功,则将 属性 更改为 true:
ngOnInit() {
this.isUserInDB().subscribe((result: any) => {
if (result.code === 200) {
this.isUserInDb = true;
}
});
}
我对此的看法是同步它,感谢 async/await
async isUserLoggedin(): Promise<boolean> {
const result = await this.isUserInDB().pipe(first()).toPromise();
if (result.code === 200) {
return true;
} else {
return false;
}
}
用法:
async somefunction(): Promise<void> {
const logged = await this.isUserLoggedin();
}