我有一个动作,得到的负载为.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())
答案 0 :(得分:1)
问题:repeat()
使用整数作为要重复计数的参数。
签名:
repeat(count: number): Observable
。
Documentation。
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));
}