繁体   English   中英

从回调中创建一个 Observable

[英]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); 

注意:不推荐使用bindCallbackObservable.create
你可以使用new Observable代替:

...
return new Observable((subscriber) => {
  firebase
    .auth()
    .onAuthStateChanged((user) => {
      subscriber.next(user);
    })
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM