账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    在 dva 里面怎么做处理异步排队
    24
    0
        * deleteDetails({payload}, {call, put}) {
          const result = yield call(deleteDetails, {payload});
          if (result.code !== 200) {
            throw result.msg;
          } else {
            Toast.success(result.msg, 1);
            yield put(routerRedux.goBack())
          }
        },

    先执行定时提示,完成提示则返回上一页,这个怎么处理异步排队

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 丢什么不丢个性。 普通会员 1楼
      在 dva.js 中,处理异步操作的排队主要是通过 Redux-saga 进行中间件管理。Redux-saga 是一个用于管理应用程序 side effects(副作用,如异步数据获取和事务)的库。 以下是一个基本的示例,展示如何在 dva 中使用 Redux-saga 处理异步操作排队: 1. 首先,在你的 model 文件中创建 saga 函数: ```javascript import { takeEvery, put } from 'redux-saga/effects'; function* fetchAsyncData(action) { try { // 模拟异步请求 const data = yield new Promise((resolve) => setTimeout(() => resolve({ result: 'success' }), 2000)); // 成功后派发 action 更新 state yield put({ type: 'updateData', payload: data, }); } catch (e) { // 异常处理 console.error('fetch data error:', e); } } export default { namespace: 'yourModelName', state: {}, effects: { *watchFetchData() { // 监听触发异步操作的 action yield takeEvery('FETCH_DATA', fetchAsyncData); }, }, reducers: { updateData(state, { payload }) { return { ...state, data: payload }; }, }, }; ``` 2. 在组件中触发异步操作: ```javascript import { dispatch } from '@@/router'; // 触发异步操作 dispatch({ type: 'yourModelName/FETCH_DATA', }); ``` 这样,每当触发 `FETCH_DATA` 这个 action 时,saga 中的 `fetchAsyncData` generator 函数就会被依次执行,实现了异步操作的排队处理。如果在 saga 中有多个并发的 `FETCH_DATA` 请求,它们将会按照触发顺序依次执行,形成队列。
    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部