React Redux:如何同时运行多个事件通道?

问题描述

在我的React Native应用程序中,我使用以下传奇来调用initializeCountDown(),该实例运行countdown()的实例。这会使initializeCountdown()每秒console.log("true")一次。

function countdown(secs) {
    return eventChannel(emitter => {
        const iv = setInterval(() => {
          secs -= 1
          if (secs > -1) {
            emitter(secs)
        } else {
            // this causes the channel to close
            emitter(END)
          }
        },1000);
        return () => {
          clearInterval(iv)
        }
      }
    )
  }

function* initializeCountdown(action) {
    let chan = yield call(countdown,action.value)
    try {
        while (true) {
            yield take(chan)
            console.log("true")
        }
    } finally {
        console.log("false")
    }
}

export default function* sagas() {
    yield takeLatest(Actions.INITIALIZE_COUNTDOWN,initializeCountdown);
}

问题是,如果我正在运行countdown()的实例,然后再次调用initializeCountdown(),它将转到finally的{​​{1}}块,并且然后再次启动。我想保持第一个实例运行,并在其上运行第二个实例。

有人知道我该怎么做吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)