【发布时间】:2020-07-08 04:47:15
【问题描述】:
我已经开始深入学习 RxJs,其中一个原因是掌握了redux-observable 副作用的方法,但我发现 sagas 更方便和“声明性”。我已经学习了merge/flat/concat/switchMap 操作符,但它并没有帮助我弄清楚如何在 rxjs 中对事物进行排序。
这是我所说的“排序”的示例,在 Timer 应用程序的实例上,可能会在一段时间后安排启动,使用 redux-saga 实现:
export function* timerSaga() {
while (true) {
yield take('START');
const { startDelay } = yield select(); // scheduled delay
const [cancelled] = yield race([
take('CANCEL_START'),
delay(startDelay)
]);
if (!cancelled) {
yield race([
call(function*() {
while (true) {
yield delay(10);
yield put({ type: 'TICK' });
}
}),
take(['STOP', 'RESET']
]);
}
}
}
我发现这个例子在逻辑上非常一致和清晰。我不知道如何用 redux-observable 来实现它。请简单地给我一些代码,它可以重现相同的逻辑,但使用 rxjs 运算符。
【问题讨论】:
标签: javascript reactjs rxjs redux-saga redux-observable