我如何在 RxJS 中调用一组动作?

How can I call an array of actions in RxJS?

我有许多重置操作需要立即触发。目前我正在使用 mergeMap 来调用如下操作类型。但是,我认为有一种方法可以用字符串数组替换类型对象,但我似乎无法弄清楚。有人可以帮忙吗?

const resetModuleEpic = action$ =>
  action$.pipe(
    ofType('RESET_MODULE'),
    mergeMap(() =>
      of(
        {
          type: 'RESET_IMAGE'
        },
        {
          type: 'RESET_CATEGORY'
        },
        {
          type: 'RESET_FILTERS'
        }
      )
    )
  );

我相信像下面这样的事情是可能的,但做错了:

const resetModuleEpic = action$ =>
  action$.pipe(
    ofType('RESET_MODULE'),
    merge(['RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS'])
  );

你在 merge 中所做的只是获取数组中的每一项并重新发出它,因此它只会输出纯字符串而不是动作。

显然有多种方法可以实现您想要的效果。例如,您可以使用 of().map() 的组合并将每个字符串转换为操作:

mergeMap(() => of('RESET_IMAGE','RESET_CATEGORY','RESET_FILTERS').pipe(
  map(type => ({ type })),
))

您的示例应该可以运行,可能错误出在您代码中的其他地方。

我已经添加了example at stackblitz。我个人更喜欢 from 而不是 of,但无法推理。