Redux-saga:检测耗时的异步任务

时间:2017-07-28 14:46:20

标签: redux timeout redux-saga

我正在尝试使用redux-saga检测任务需要很长时间。 SomeHeavyAsyncFunc是一项具有不同时间消耗的任务,从几毫秒到几秒。 我想在需要超过一定时间的时候触发一个动作,以显示一个装载程序。

但是我不想延迟比赛,我只想在必要时触发加载动作,但即使它很长,我也不想取消动作。

以下是我的想法的摘录:

    const timeOut = yield fork(function* () {
      yield call(delay, 300);
      yield put(isPending());
    });
    // in parallel run the computation
    // it will cancel the timeout after computation is done
    const task = yield fork(function* () {
      const res = yield call(SomeHeavyAsyncFunc);
      yield cancel(timeOut);
      yield put(success());
    });

超时在后台运行。如果它结束了,它只是放置一个显示加载器的动作。任务完成后超时被取消,因此如果任务实际上很快,则不会显示加载程序。

但是,这似乎不起作用。仅当此示例中的操作超过300毫秒时才会触发挂起操作。但是,一旦延迟结束但后来没有触发,所以装载机只会很晚才出现。

有人在这方面有一个有效的例子吗?也许我的传奇是错的,但我要求的是使用redux(由于减速器计算时间)可以撤销吗?

0 个答案:

没有答案