我有一个动作,获得.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())
问题:repeat()
将一个整数作为重复计数的参数。
签名:
repeat(count: number): Observable
。 Documentation。
来自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));
}