【发布时间】:2017-08-01 13:40:10
【问题描述】:
我有一个 Angular 4 应用程序。在这个应用程序中,我有一个 paypal 服务,它执行一些服务器工作并(从客户端)导航到 paypal。
@Injectable()
export class PaypalService {
private readonly http: HttpApi;
constructor(private readonly httpFactory: HttpFactoryService) {
this.http = httpFactory.get(HttpRequestType.Secured);
}
checkout(transactionId: string):
Observable<Response> {
let subscriber = this.http.post(environment.paymentServer + '/pay', {transactionId: transactionId})
subscriber.subscribe((response:Response) => {
let result = response.json();
window.location.href = result.paymentUrl;
});
return subscriber;
}
}
我希望 window.location.href 仅在所有订阅者都收到通知后才被调用。
paypal.checkout("1234").subscribe(() =>
//This code should be called before the navigation will start
doSomeCleaning())
我知道我可以使用延迟,但我想知道是否有更好的选择。
【问题讨论】:
-
尝试使用
flatMap运算符映射所有流,最后只有一个订阅方法可以调用重定向。