代码之家  ›  专栏  ›  技术社区  ›  underfrankenwood

如何在指定数量的行动呼吁后停止传奇?

  •  0
  • underfrankenwood  · 技术社区  · 8 月前

    我有个案子要打电话 n sagas:

    function* mainSaga() {
       yield all(
         someArrayOfIds.map((id) => call(pollSaga, id))
       )
    }
    

    pollSaga:

    function* pollSaga(id) {
      yield race([
         call(workSaga, id)
         take('STOP_ACTION')
      ])
    }
    

    workSaga:

    function* workSaga(id) {
      while (true) {
        yield call(...);
        yield delay(...)
      }
    }
    

    我在这里非常挣扎的是,如何知道所有的民意调查传奇何时结束。正如您在中所看到的 pollSaga 我可以发送 STOP_ACTION 但这是无用的,因为它会停止所有的传奇(我不想一次停止所有的传说)。

    我很难在这里正确地解释这个目标,但如果你有经验,你就会明白我的意思。我只想能够区分 pollSaga 呼叫,并能够分别停止每个呼叫,并在所有呼叫完成后以某种方式“倾听”。

    也许有办法,如果我派遣 停止操作 只有指定的pollSaga会被取消,而不是全部取消?

    0 回复  |  直到 8 月前