2016-11-08 67 views
0

我在Angular 2中有一個組件,用於調用服務並允許某人登錄到Facebook。它的工作原理是這樣的:從Angular 2服務返回異步數據

在我的組件我打電話給我的服務與this.facebook.login()

而在我的服務,裏面login(),我讓跟FB.login(res => { //do stuff with res });

這個彈出,你進入Facebook的身份驗證窗口有人登錄你的用戶名和密碼。

這很好。有人登錄他們的Facebook帳戶後,res有我需要從Facebook的數據。但是我真正想做的是將數據返回給我的組件,這樣我就可以做到這一點。如何在使用Facebook登錄後返回這些數據?我已經嘗試過使用Observables,但是我仍然遇到錯誤。

+0

你能展示一些你試圖讓它工作的代碼嗎? – silentsod

+0

我不能編輯我的問題,但這是我的嘗試。在我的組件中:'this.facebook.login()。subscribe(data => {console.log(data);});'。在我的服務中:'返回FB.login(res => {return res;});'。我認爲當它不是一個可觀察的對象時,我正在對待某種可觀察的事物,但我不確定。 – user5021816

回答

1

沒有看到您的完整代碼,我無法確切地說出,但您是在正確的道路上。在您的服務中,在您執行FB登錄時,您需要將該返回值設爲可觀察值,以便您可以訂閱。

public Login(): Observable<any> { 
    return Observable.create((observer: NextObserver<any>) => { 
     // Do the FB login and wait for the data to come back 
     FB.login(response => { 
      // Return the data as an observable 
      observer.next(<any>response); 
      observer.complete(); 
     }); 
    }); 
} 
+0

這正是我需要的。謝謝! – user5021816

+0

找不到名稱NextObserver。如何解決這個問題? –