[英]Making an Observable from a callback
我有一个身份验证警卫,当访问站点并且用户已经登录时,它需要异步响应 true/false。
我正在使用 Firebase 的onAuthStateChanged
( 链接到文档)并且它使用回调函数。 如何将我的isLoggedIn()
方法转换为可以返回Observable<boolean>
?
打字稿:
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;
});
}
你可以这样做。
get isLoggedIn(): Observable<boolean> {
// want something like this:
return Observable.create(
observer => firebase
.auth()
.onAuthStateChanged((user) => {
observer.next(!!user)
});
);
}
还有一种方法可以使用来自 rxjs/observable/bindCallback 的 bindCallback
const observable=bindCallback(functionWhichExpectsCallBack)
例如
function foo(value, callback) {
callback(value);
}
//converts callback to observable
const observable = bindCallback(foo);
observable(1)
.subscribe(console.log);
注意:不推荐使用bindCallback
和Observable.create
,
你可以使用new Observable
代替:
...
return new Observable((subscriber) => {
firebase
.auth()
.onAuthStateChanged((user) => {
subscriber.next(user);
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.