Return 来自 Angular 2 服务的异步数据

Return Asynchronous Data from Angular 2 Service

我在 Angular 2 中有一个组件调用服务并允许某人登录 Facebook。它是这样工作的:

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

调用我的服务

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

登录

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

效果很好。在有人登录他们的 Facebook 帐户后,res 从 Facebook 获得了我需要的数据。但我真正想做的是 return 将数据返回到我的组件,这样我就可以用它做一些事情。在他们使用 Facebook 登录后,我如何 return 这些数据?我试过使用 Observables,但我一直 运行 出错。

没有看到你的完整代码,我无法准确判断,但你走在正确的道路上。在您进行 FB 登录的服务中,您需要使 return 成为一个可观察对象,以便您可以订阅。

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