gpt4 book ai didi

asynchronous - Angular2 通过订阅返回 true/false

转载 作者:太空狗 更新时间:2023-10-29 18:33:42 25 4
gpt4 key购买 nike

我需要检查用户是否存在于数据库中,如果存在则返回 true。我有一个功能(顺便说一句,我正在使用 firebase):

  checkIfUserExists(login: string): boolean {
this.af.database.list('/users', {
query: {
orderByChild: 'login',
equalTo: login
}
}).subscribe(response => {
if(response.length === 0 ) return true
})
return false
}

问题是函数总是返回 false。它不等待检查订阅。有什么办法可以解决吗?

最佳答案

您可以返回可观察对象本身:

  checkIfUserExists(login: string): Observable<boolean> {
return this.af.database.list('/users', {
query: {
orderByChild: 'login',
equalTo: login
}
}).map(response => {
if(response.length === 0 ) {
return true;
} else {
return false;
}
});
}

在这种情况下,你可以这样使用它:

checkIfUserExists('some username')
.subscribe(userExists => {
// Do something
});

这是因为您的处理是异步的,因此您需要使用回调来处理处理。这样你就可以确保在执行异步处理时执行处理。

对于此类用例,您可以使用可观察对象(rxjs - 就像我的示例中的那样)或 promise 。

关于asynchronous - Angular2 通过订阅返回 true/false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com