循环一定次数

问题描述 投票:1回答:1

我有一个动作,获得.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())
redux-observable
1个回答
1
投票

问题:repeat()将一个整数作为重复计数的参数。

签名:

repeat(count: number): ObservableDocumentation

来自learnrxjs的Example

您的示例将如下所示:

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));
}


© www.soinside.com 2019 - 2024. All rights reserved.