我如何在RxJs / Redux-Observable中对动作进行排序?

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

我已经开始深入学习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 / ...

javascript reactjs rxjs redux-saga redux-observable
1个回答
0
投票

我假设take()返回一个可观察到的,还没有测试代码。可以将其转换为如下所示的rx时尚。

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