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

如何等待从typescript中的另一个thunk调用时执行承诺的redux thunk

在 TypeScript 中,Redux Thunk 是一个中间件,用于处理异步操作。当我们在一个 Thunk 中调用另一个 Thunk 时,我们希望等待被调用的 Thunk 执行完毕后再执行当前 Thunk 中的承诺(Promise)。

要实现这个功能,可以使用 async/await 或者 Promise 的方式来处理。

使用 async/await 的方式:

  1. 首先,确保你的 Redux Thunk 中间件已经正确配置和引入。
  2. 在当前 Thunk 中,将被调用的 Thunk 包装在一个 async 函数中,并使用 await 关键字等待其执行完毕。
  3. 在等待期间,可以执行其他同步操作。
  4. 当被调用的 Thunk 执行完毕后,可以获取其返回值,并继续执行当前 Thunk 中的承诺。

以下是一个示例代码:

代码语言:txt
复制
import { ThunkAction } from 'redux-thunk';
import { RootState } from './store';

// 定义一个异步操作的 Thunk
const asyncThunk = (): ThunkAction<void, RootState, unknown, Action> => async (dispatch) => {
  // 异步操作代码
  await someAsyncFunction();
  dispatch(someAction());
};

// 当前 Thunk
const currentThunk = (): ThunkAction<void, RootState, unknown, Action> => async (dispatch) => {
  // 执行其他同步操作

  // 调用另一个 Thunk
  await dispatch(asyncThunk());

  // 继续执行当前 Thunk 中的承诺
  dispatch(someOtherAction());
};

使用 Promise 的方式:

  1. 确保 Redux Thunk 中间件已正确配置和引入。
  2. 在当前 Thunk 中,返回一个 Promise 对象,并在 Promise 的回调函数中执行被调用的 Thunk。
  3. 在等待期间,可以执行其他同步操作。
  4. 当被调用的 Thunk 执行完毕后,可以在 Promise 的 then() 方法中获取其返回值,并继续执行当前 Thunk 中的承诺。

以下是一个示例代码:

代码语言:txt
复制
import { ThunkAction } from 'redux-thunk';
import { RootState } from './store';

// 定义一个异步操作的 Thunk
const asyncThunk = (): ThunkAction<void, RootState, unknown, Action> => (dispatch) => {
  // 返回一个 Promise 对象
  return new Promise((resolve) => {
    // 异步操作代码
    someAsyncFunction().then(() => {
      dispatch(someAction());
      resolve();
    });
  });
};

// 当前 Thunk
const currentThunk = (): ThunkAction<void, RootState, unknown, Action> => (dispatch) => {
  // 执行其他同步操作

  // 调用另一个 Thunk
  return dispatch(asyncThunk()).then(() => {
    // 继续执行当前 Thunk 中的承诺
    dispatch(someOtherAction());
  });
};

这样,无论是使用 async/await 还是 Promise 的方式,都可以等待从 TypeScript 中的另一个 Thunk 调用时执行承诺的 Redux Thunk。

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

相关·内容

没有搜到相关的视频

领券