当前位置: 代码迷 >> 综合 >> 从 generator 函数 到 redux -saga (六)
  详细解决方案

从 generator 函数 到 redux -saga (六)

热度:17   发布时间:2023-11-21 05:19:46.0

同时执行多个任务

import { call } from 'redux-saga/effects'// effects 将会同步执行
const [users, repos] = yield [call(fetch, '/users'),call(fetch, '/repos')
]

saga中的超时处理

import { race, call, put } from 'redux-saga/effects'
import { delay } from 'redux-saga'function* fetchPostsWithTimeout() {const {posts, timeout} = yield race({posts: call(fetchApi, '/posts'),timeout: call(delay, 1000)})if (posts)put({type: 'POSTS_RECEIVED', posts})elseput({type: 'TIMEOUT_ERROR'})
}

race 的另一个有用的功能是,它会自动取消那些失败的 Effects。

import { race, take, call } from 'redux-saga/effects'function* backgroundTask() {while (true) { ... }
}function* watchStartBackgroundTask() {while (true) {yield take('START_BACKGROUND_TASK')yield race({task: call(backgroundTask),cancel: take('CANCEL_TASK')})}
}

 

  相关解决方案