2017-08-07 54 views
0

可观察我有一个角2服务,此构造:角服务等待在构造

constructor(public fireAuth: AngularFireAuth) 
{ 
    console.log('1'); 
    fireAuth.authState.subscribe(user => 
    { 
     console.log('2'); 
     this.user = user; 
    }); 
    console.log('3'); 
} 

当它的实例,日志顺序为1,3和2,由于第二个日志是可观察的内部。我不能使用它async/await,因为它在服务constructor。有什么办法让这个调用同步吗?

+3

我认为更好的问题是你为什么要在你的服务构造函数中这样做? – ChrisG

+0

阅读文档,这取决于fireBase是否支持同步呼叫 –

+1

同步XHR是巨大的禁止否。你不能。你不应该。解决方案在于这个问题。如果你不能在构造函数中做到这一点,你不应该在构造函数中做到这一点。 – estus

回答

0

您需要使用完整的回调;

console.log('1'); 
fireAuth.authState.subscribe(
    user => { 
     console.log('2'); 
     this.user = user; 
    }, 
    error => console.error(error), 
() => { 
     console.log('3'); 
    });