Angular 在回调到“时转换为承诺”;从「;rxjs6
在这个内部函数中,我们执行异步处理和 然后,当我们准备就绪时,我们调用resolve(),如下所示: 具体代码:firebase认证github项目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) {
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);