微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

一起使用@ngrx/effects 和 firebase 的问题立即触发成功操作

如何解决一起使用@ngrx/effects 和 firebase 的问题立即触发成功操作

我将 FirebaseAngularFirengrx/effects(所有内容的最新版本)一起使用。

看看下面的效果

  createGroupRequest$ = createEffect(() =>
    this.actions$.pipe(
      ofType(CreateGroupActions.createGroupRequest),switchMap(action =>
        of(this.afs.collection<Group>('groups').add(action.group))
          .pipe(
            map(() => CreateGroupActions.createGroupSuccess()),// This is fired instantly,NOT when the request is done
            catchError(error => of(CreateGroupActions.createGroupFailure(error)))
          ))
    )
  );

  constructor(
    private actions$: Actions,private store: Store<AppState>,private afs: AngularFirestore,) {
  }

我的主要问题是我的成功操作是立即触发的,而不是在 add() 请求完成时触发。我很确定这是因为 firebase 的 collection.add() 函数返回的是 promise 而不是 observable。

我尝试用 of() 包装它以使其成为 Observable,但没有帮助。有什么想法吗?

解决方法

我已经解决了。

of() 更改为 from() 使其有效。

当我在官方文档中阅读这些运算符时,我注意到 of() 实际上并没有将参数转换为 Observable,而 from() 正是这样做的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。