首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redux-saga不会等待api调用解决,而是不断返回承诺。如何在api调用时进行"yeild call“等待?

在Redux-saga中,可以使用yield call来等待api调用解决。yield call是一个Effect,用于调用函数或方法,并等待其返回结果。

具体步骤如下:

  1. 首先,确保你已经安装了redux-saga库,并在应用程序的saga文件中引入所需的依赖。
  2. 在saga文件中,定义一个generator函数,用于处理异步逻辑。
  3. 在generator函数中,使用yield call来调用api函数,并等待其返回结果。
  4. 在调用api函数时,可以传递参数,以便根据需要进行api调用。
  5. 使用yield put来触发一个action,以便在api调用完成后更新应用程序的状态。

下面是一个示例代码,展示了如何在api调用时使用yield call进行等待:

代码语言:txt
复制
import { call, put } from 'redux-saga/effects';
import { fetchUserSuccess, fetchUserFailure } from './actions';
import { getUserApi } from './api';

function* fetchUserSaga(action) {
  try {
    const user = yield call(getUserApi, action.payload); // 使用yield call调用api函数,并等待其返回结果
    yield put(fetchUserSuccess(user)); // 触发一个action,更新应用程序的状态
  } catch (error) {
    yield put(fetchUserFailure(error));
  }
}

export default function* rootSaga() {
  yield takeEvery('FETCH_USER_REQUEST', fetchUserSaga);
}

在上述示例中,fetchUserSaga是一个generator函数,它使用yield call来调用getUserApi函数,并等待其返回结果。在api调用完成后,使用yield put触发一个action,更新应用程序的状态。

需要注意的是,getUserApi是一个示例api函数,你需要根据实际情况替换为你自己的api函数。另外,FETCH_USER_REQUEST是一个示例action类型,你也需要根据实际情况替换为你自己的action类型。

关于Redux-saga的更多信息和使用方法,你可以参考腾讯云的相关产品文档:Redux-saga产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券