在这个内部函数中,我们执行异步处理,然后,当我们准备就绪时,调用resolve(),如下所示:
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
resolve();
}, 1000);
});具体代码:这里 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');
}
})
})
}这里说
对于rxjs 6.0.0,请使用:
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表达式等效的第二个代码片段是什么?
发布于 2019-01-23 08:14:24
我不知道我是否完全理解您的问题,但是如果您试图从用户令牌返回一个可观察到的流,也许以下内容可以工作:
getCurrentUser(): Observable<any> {
return new Observable(observer => {
firebase.auth().onAuthStateChanged(user => {
user.getIdToken().then(token => {
observer.next(token);
}).catch(error => {
observer.error(error);
})
})
})
}当auth状态发生变化时,将在流上发送一个新的用户令牌。希望这能有所帮助。
发布于 2019-01-23 08:17:58
bindCallback(firebase.auth().onAuthStateChanged)
.subscribe(console.log);https://stackoverflow.com/questions/54322194
复制相似问题