循环一定次数

时间:2019-04-13 15:46:22

标签: redux-observable

我有一个动作,得到的负载为.times。我想循环很多次,我做到了:

function upAsyncEpic(action$: Observable<Action>, state$: StateObservable<State>): Observable<Action> {
    return action$.pipe(
        ofType(UP_ASYNC),
        delay(1000),
        mapTo(up())
    );
}

这不会循环,只会发生一次。我希望它循环“延迟”然后“ mapTo” action.times次。我尝试过:

    return action$.pipe(
        ofType(UP_ASYNC),
        repeat(action => action.times),
        delay(1000),
        mapTo(up())
    );

但是这没有用。超级全新的redux-observables,只需学习即可。

基本上我想要的是如果有人调度动作{ type: 'UP_ASYNC', times: 5 },这应该发生的情况:

            delay(1000),
            mapTo(up())
            delay(1000),
            mapTo(up())
            delay(1000),
            mapTo(up())
            delay(1000),
            mapTo(up())
            delay(1000),
            mapTo(up())

1 个答案:

答案 0 :(得分:1)

问题:repeat()使用整数作为要重复计数的参数。

签名:

repeat(count: number): ObservableDocumentation

Example来自Learnrxjs

您的示例如下所示:

function upAsyncEpic(
  action$: Observable<Action>,
  state$: StateObservable<State>
): Observable<Action> {
  let count = 0;

  const source = action$.pipe(
    ofType(UP_ASYNC),
    map(({ times }) => {
      count = times;
    }),
    delay(1000),
    mapTo(up())
  );

  return source.pipe(repeat(count));
}