从Angular 2服务返回异步数据

时间:2016-11-08 23:38:17

标签: angular facebook-javascript-sdk rxjs

我在Angular 2中有一个组件,它调用服务并允许某人登录Facebook。它的工作原理如下:

在我的组件中,我使用this.facebook.login()

调用我的服务

在我的服务login()内,我让某人使用FB.login(res => { //do stuff with res });

登录

这会弹出Facebook身份验证窗口,您可以在其中输入用户名和密码。

这很有效。有人登录他们的Facebook帐户后,res拥有我需要的Facebook数据。但我真正想做的是将数据返回给我的组件,这样我就可以用它来做。如何在用Facebook登录后返回此数据?我曾尝试使用Observables,但我一直遇到错误。

1 个答案:

答案 0 :(得分:1)

如果没有看到完整的代码,我无法确切地说出来,但是你走的是正确的道路。在您的服务中,您进行FB登录,您需要返回一个observable,以便您可以订阅。

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();
        });
    });
}