Javascript 取消除redux saga中的一项任务之外的所有任务

Javascript 取消除redux saga中的一项任务之外的所有任务,javascript,redux,redux-saga,Javascript,Redux,Redux Saga,我正在阅读redux saga文档中的一些高级概念,但我有一个问题。在文档中,使用以下代码分派代码中存在的所有操作: import { select, take } from 'redux-saga/effects' function* watchAndLog() { while (true) { const action = yield take('*') const state = yield select() console.log('action', ac

我正在阅读redux saga文档中的一些高级概念,但我有一个问题。在文档中,使用以下代码分派代码中存在的所有操作:

import { select, take } from 'redux-saga/effects'

function* watchAndLog() {
  while (true) {
    const action = yield take('*')
    const state = yield select()

    console.log('action', action)
    console.log('state after', state)
  }
}
使用通配符*我们将执行应用程序中的所有操作。除了一个或两个具体行动之外,是否有一种方法可以采取所有行动?我想调度除“登录”和“注销”操作之外的所有操作?有什么想法吗?

来自以下文档:

如果它是一个函数,那么如果模式(action)为true,则该操作将匹配(例如,take(action=>action.entities)将匹配具有(truthy)entitiesfield的所有操作。)

因此,您可以执行以下操作:

function* watchAndLog() {
  while (true) {
    const action = take(action => ['LOGIN', 'LOGOUT'].indexOf(action.type) < 0);
    ...
  }
}
函数*watchAndLog(){
while(true){
const action=take(action=>['LOGIN','LOGOUT'].indexOf(action.type)<0);
...
}
}

标题有点误导。你说你想“取消”任务
take
不是一个传奇故事。在上面的
take
时,您已经启动了一个操作。