在 "from" rxjs6 的回调中转换为 promise

transform to promise in callback to "from" rxjs6

Here

Inside this inner function we perform our asynchronous processing and then when we are ready we call resolve(), like so:

var promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log("Async Work Complete");
    resolve();
  }, 1000);
});

具体代码:here firebase authentication github project,

 getCurrentUser(){
    return new Promise<any>((resolve, reject) => {
      var user = firebase.auth().onAuthStateChanged(function(user){
        if (user) {
          resolve(user);
        } else {
          reject('No user logged in');
        }
      })
    })
  }

表示

For rxjs 6.0.0 use:

import { from } from 'rxjs';

var observableFromPromise =  from(promiseSrc);

我可以想象解决方案是

  getCurrentUser() {
    return from(firebase.auth().onAuthStateChanged(function (user) {
      user.getIdToken().then(x => {
        return x;
      })
    })
    )
  }

getCurrentUser() {
    firebase.auth().onAuthStateChanged(function (user) {
      return from(user.getIdToken());
    })

  }

我的问题是回调中与 from 表达式等效的第二个代码片段是什么?

我不知道我是否完全理解你的问题,但如果你试图 return 来自用户令牌的可观察流,也许以下方法可行:

getCurrentUser(): Observable<any> {
    return new Observable(observer => {
        firebase.auth().onAuthStateChanged(user => {
           user.getIdToken().then(token => {
               observer.next(token);
           }).catch(error => {
               observer.error(error);
           })
        })
    })
}

只要身份验证状态发生变化,就会在流中发送一个新的用户令牌。 希望这有帮助。

bindCallback呢:

bindCallback(firebase.auth().onAuthStateChanged)
  .subscribe(console.log);