根据条件在订阅内执行代码

execute code inside subscribe on condition

我的 angular2 应用程序中有可观察到的数据。数据有 2 个属性

 {isFetching: false, user: {userID: 1, firstName: "john", lastName: "public"} }.

当从服务器检索数据时,isFetching 标志为真且用户对象为空。在我的一个组件中,当可观察对象订阅用户对象为空时,我需要通过可观察对象 object.Initially 上的 userID 获取一些其他数据。在我的代码中,我必须在执行其他操作之前检查用户是否为空。下面的代码有效,但我认为必须有比在订阅块中使用 if 条件更好的方法。

this.store.select<UserProfileState>('user')
        .subscribe(user => {
            if (!user.isFetching) {
              this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID));
            }
        });

感谢任何帮助。

当你使用 Observable 时,你可以使用过滤器:

this.store.select<UserProfileState>('user')
    .filter(user => !user.isFetching)
    .subscribe(user => {
        this.store.dispatch(this.informationPanelActions.loadInformationPanel(user.user.clientID, user.user.userID));
    });