Angular 在回调到“时转换为承诺”;从「;rxjs6

Angular 在回调到“时转换为承诺”;从「;rxjs6,angular,angular-promise,rxjs6,Angular,Angular Promise,Rxjs6,在这个内部函数中,我们执行异步处理和 然后,当我们准备就绪时,我们调用resolve(),如下所示: 具体代码:firebase认证github项目 getCurrentUser(){ return new Promise<any>((resolve, reject) => { var user = firebase.auth().onAuthStateChanged(function(user){ if (user) {

在这个内部函数中,我们执行异步处理和 然后,当我们准备就绪时,我们调用resolve(),如下所示:

具体代码:firebase认证github项目

 getCurrentUser(){
    return new Promise<any>((resolve, reject) => {
      var user = firebase.auth().onAuthStateChanged(function(user){
        if (user) {
          resolve(user);
        } else {
          reject('No user logged in');
        }
      })
    })
  }
我可以想象解决办法是

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


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

我不知道我是否完全理解您的问题,但如果您试图从用户令牌返回可观察的流,可能以下方法可行:

getCurrentUser(): Observable<any> {
    return new Observable(observer => {
        firebase.auth().onAuthStateChanged(user => {
           user.getIdToken().then(token => {
               observer.next(token);
           }).catch(error => {
               observer.error(error);
           })
        })
    })
}
getCurrentUser():可观察{
返回新的可观察对象(观察者=>{
firebase.auth().onAuthStateChanged(用户=>{
user.getIdToken()。然后(token=>{
下一个(令牌);
}).catch(错误=>{
观察者错误(错误);
})
})
})
}
每当身份验证状态发生变化时,将在流上发送一个新的用户令牌。
希望这能有所帮助。

我不知道我是否完全理解您的问题,但如果您试图从用户令牌返回一个可观察到的流,可能以下方法可行:

getCurrentUser(): Observable<any> {
    return new Observable(observer => {
        firebase.auth().onAuthStateChanged(user => {
           user.getIdToken().then(token => {
               observer.next(token);
           }).catch(error => {
               observer.error(error);
           })
        })
    })
}
getCurrentUser():可观察{
返回新的可观察对象(观察者=>{
firebase.auth().onAuthStateChanged(用户=>{
user.getIdToken()。然后(token=>{
下一个(令牌);
}).catch(错误=>{
观察者错误(错误);
})
})
})
}
每当身份验证状态发生变化时,将在流上发送一个新的用户令牌。 希望这有帮助。

关于:

那么:


我不确定,如果那只是我,但我无法理解你的问题。你能详细解释一下吗?你的问题很令人困惑。你对“承诺”感到困惑吗
promiseSrc
是你的承诺,所以如果你愿意,你可以在里面写一个新的承诺。@ShashankVivek请看我试过的部分的最后一部分,我希望它能澄清我不确定的问题,如果那只是我,但我无法理解你的问题。你能详细解释一下吗?你的问题很令人困惑。你对“承诺”感到困惑吗
promiseSrc
是你们的承诺,所以你们可以在里面写一个新的承诺,若你们愿意的话。@ShashankVivek请看我试过的部分的最后一部分,我希望它能澄清这个问题
getCurrentUser() {
    firebase.auth().onAuthStateChanged(function (user) {
      return from(user.getIdToken());
    })

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