我有一个身份验证保护,当站点被访问并且用户已经登录时,它需要一个异步响应true/false。
我使用的是Firebase的onAuthStateChanged
(link to docs),它使用了一个回调函数。如何将我的isLoggedIn()
方法转换为可以返回Observable<boolean>
的方法
Typscript:
get isLoggedIn(): Observable<boolean> {
// want something like this:
return Observable.fromCallback(firebase.auth().onAuthStateChanged).map(user => !!user);
// this returns () => boolean, but I need a promise or observable
return firebase
.auth()
.onAuthStateChanged((user) => {
return !!user;
});
}
发布于 2017-03-31 10:16:54
你可以这样做。
get isLoggedIn(): Observable<boolean> {
// want something like this:
return Observable.create(
observer => firebase
.auth()
.onAuthStateChanged((user) => {
observer.next(!!user)
});
);
}
发布于 2019-01-30 00:11:38
还有一种方法可以使用rxjs/observable/bindCallback中的bindCallback来完成此操作
const observable=bindCallback(functionWhichExpectsCallBack)
e.g
function foo(value, callback) {
callback(value);
}
//converts callback to observable
const observable = bindCallback(foo);
observable(1)
.subscribe(console.log);
发布于 2020-12-23 23:06:52
注意:bindCallback
和Observable.create
已被弃用,
您可以改用new Observable
:
...
return new Observable((subscriber) => {
firebase
.auth()
.onAuthStateChanged((user) => {
subscriber.next(user);
})
}
https://stackoverflow.com/questions/43131162
复制相似问题