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