根据条件在订阅内执行代码
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));
});
我的 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));
});