Nic*_*nas 7 javascript rxjs firebase firebase-authentication angular
我有一个auth防护,当访问该站点并且用户已经登录时,需要异步响应true/false.
我正在使用Firebase onAuthStateChanged(链接到文档),它使用回调函数.如何将我的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;
});
}
Run Code Online (Sandbox Code Playgroud)
use*_*310 12
还有一种方法可以使用来自 rxjs/observable/bindCallback 的 bindCallback
const observable=bindCallback(functionWhichExpectsCallBack)
Run Code Online (Sandbox Code Playgroud)
例如
function foo(value, callback) {
callback(value);
}
//converts callback to observable
const observable = bindCallback(foo);
observable(1)
.subscribe(console.log);
Run Code Online (Sandbox Code Playgroud)
小智 9
你可以这样做.
get isLoggedIn(): Observable<boolean> {
// want something like this:
return Observable.create(
observer => firebase
.auth()
.onAuthStateChanged((user) => {
observer.next(!!user)
});
);
}
Run Code Online (Sandbox Code Playgroud)
注意:bindCallback已Observable.create弃用,
您可以使用new Observable:
...
return new Observable((subscriber) => {
firebase
.auth()
.onAuthStateChanged((user) => {
subscriber.next(user);
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3747 次 |
| 最近记录: |