我已经开始深入学习RxJ,原因之一是掌握redux-observable
副作用方法,因此我发现sagas更方便和“声明式”。我已经学过merge/flat/concat/switchMap
运算符,但并没有帮助我弄清楚如何在rxjs中对事物进行排序。
这是我在计时器应用程序实例上“排序”的意思,其中可以在一段时间后安排启动,使用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
运算符。
我已经开始深入学习RxJ,原因之一是掌握Redux可观察到的副作用方法,因此我发现sagas更方便和“声明式”。我已经学过merge / flat / concat / ...
我假设take()
返回一个可观察到的,还没有测试代码。可以将其转换为如下所示的rx时尚。