我尝试从以下方法返回 authResult 但看起来所有执行路径都不返回值。
这是我的方法:
public loginWithFacebook(): Observable<AuthResult> {
this.fbService.login().then((authResponse: any) => {
const accessToken = authResponse.accessToken;
return this.model.loginWithFacebook(accessToken).pipe(tap(res => this.setSession(res)), shareReplay());
});
}
这是错误消息:
声明类型既不是“undefined”、“void”也不是“any”的函数必须返回一个值。
如何重写它以返回 Observable?
感谢您的关注。
您可以使用 rsjx from
将承诺转换为可观察的import { from, Observable } from 'rxjs';
import { switchMap, tap, shareReplay } from 'rxjs/operators';
public loginWithFacebook(): Observable<AuthResult> {
return from(this.fbService.login()).pipe(
switchMap((authResponse: any) => {
const accessToken = authResponse.accessToken;
return this.model.loginWithFacebook(accessToken);
}),
tap(res => this.setSession(res)),
shareReplay()
);
}