首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何等待从typescript中的另一个thunk调用时执行承诺的redux thunk

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

Stack Overflow用户
提问于 2019-05-03 21:04:09
回答 1查看 364关注 0票数 0

我有一个主要的thunk,当点击一个按钮时会被执行。在这个thunk中,我想调用另一个thunk,等待它完成后再继续。第二个thunk使用嵌套的promise来执行promise。然而,我还不知道如何等待第二个thunk完成它的异步操作。

我尝试在我的thunk中使用return关键字来使调用同步。我不能使用async关键字,因为我需要它在IE 11中工作。

我也尝试过让我的第二个thunk返回一个promise,然后做一些像这样的dispatch(secondThunk()).then(...),但是它显示我的thunk实际上并没有返回promise。

下面是我的一些代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export function mainThunk(): ThunkAction<void, void, void, AnyAction> {
    return (dispatch: Dispatch<any>) => {
    ...do some stuff
    dispatch(secondThunk());
    ...do other stuff
    };
}

export function secondThunk(): ThunkAction<void, void, void, AnyAction> {
    return (dispatch: Dispatch<any>) => {
      return new Promise((resolve: any, reject: any) => {
        someAsyncFunction()
        .then((response) => {
           return Promise.all(someArray.map(someId => {
             return someOtherAsyncFunction(someId):
         }));
        })
        .then((responses) => {
           response.foreach(response => {
             dispatch(someReduxAction(response.someField));
           });
        })
        .then(() => {
          resolve();
        });
    });
    };
}

当我运行我的代码时,mainThunk在执行之前并没有等待secondThunk完成。你能帮我弄清楚怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-04 09:57:40

你就快到了。在您的mainThunk函数中,您需要等待promise解析或拒绝。我已经用Javascript而不是Typescript写了我的演示。然而,这些原则是相同的。Code-sandbox here

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import axios from "axios";

function mainThunk() {
  secondThunk()
    .then(data => {
      console.log("success");
      console.log(data);
    })
    .catch(e => {
      console.log("something went wrong");
      console.log(e);
    });
}

function secondThunk() {
  return new Promise((resolve, reject) => {
    axios
      .get("https://swapi.co/api/people/")
      .then(people => {
        someOtherAsyncFunction().then(planets => {
          const response = {
            planets: planets,
            people: people
          };
          resolve(response);
        });
      })
      .catch(e => {
        reject(e);
      });
  });
}

function someOtherAsyncFunction() {
  return axios.get("https://swapi.co/api/planets/").then(response => {
    return response;
  });
}

mainThunk();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55977098

复制
相关文章
redux-thunk
一、redux-thunk介绍 redux-thunk用于处理异步action,同类型的有redux-saga
_kyle
2020/08/24
5860
理解 React 中的 Redux-Thunk
Thunk 是一个逻辑编程概念。你可以用来处理推迟任何事件的计算或者评估的函数,并且 React-Thunk 可以有效地充当应用程序的单独线程。
Jimmy_is_jimmy
2023/07/09
5670
理解 React 中的 Redux-Thunk
React-Redux-thunk
React-Redux-Thunk是一个用于处理Redux异步操作的中间件,它扩展了Redux的能力,使您能够更轻松地处理异步操作,如网络请求或定时任务。
杨不易呀
2023/10/01
2270
redux-thunk中间件
最近在看redux,主要是redux官方教程(参考文章1)和网上文章(参考文章2),基础部分已经看完,正在理解middleware中间件部分,自我感觉中间件的思想不难理解,主要是它的实现方式涉及到函数式编程,真的太抽象了。redux-thunk是一种中间件,它能使你在action creator中返回函数,此返回函数就是thunk函数,模拟一下就是
张宗伟 plus
2022/10/28
5580
React-Redux-thunk实现原理
React-Redux-Thunk是一个用于处理Redux异步操作的中间件,它的实现原理基于Redux middleware的概念。它的核心思想是允许action creators返回函数而不是普通的action对象。
杨不易呀
2023/10/01
2250
redux-thunk 中间件的示例
Redux处理异步任务——异步数据流中间件:redux-thunk & action是一个函数,函数内部处理异步任务
用户9914333
2022/07/22
5650
redux-thunk引发的redux middleware和store enhancer浅析
项目中使用redux-thunk来解决异步请求的问题,但是为什么要引入redux-thunk来解决异步请求问题,不借助redux-thunk就无法解决吗?
IMWeb前端团队
2019/12/03
1.1K0
造一个 redux-thunk 轮子
哈?redux-thunk 不就是那个只有 14 行代码的轮子嘛?我一行就能写出来还要你来教我做事?
写代码的海怪
2022/03/29
7520
造一个 redux-thunk 轮子
Thunk函数的使用
编译器的求值策略通常分为传值调用以及传名调用,Thunk函数是应用于编译器的传名调用实现,往往是将参数放到一个临时函数之中,再将这个临时函数传入函数体,这个临时函数就叫做Thunk 函数。
WindRunnerMax
2020/08/27
1.7K0
Redux异步解决方案之Redux-Thunk原理及源码解析
前段时间,我们写了一篇Redux源码分析的文章,也分析了跟React连接的库React-Redux的源码实现。但是在Redux的生态中还有一个很重要的部分没有涉及到,那就是Redux的异步解决方案。本文会讲解Redux官方实现的异步解决方案----Redux-Thunk,我们还是会从基本的用法入手,再到原理解析,然后自己手写一个Redux-Thunk来替换它,也就是源码解析。
蒋鹏飞
2020/10/15
3.6K0
JavaScript 中「Thunk」怎么理解?
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情
掘金安东尼
2022/09/22
4551
JavaScript 中「Thunk」怎么理解?
Redux异步解决方案 1. Redux-Thunk中间件
简单介绍一下thunk,这是一个中间件,是解决redux异步问题产生的。我们都知道,在使用redux的时候,通过dispatch一个action 发生到reducer 然后传递给store修改状态 一系列都是同步的,那如果说我dispatch一个action 这个action帮我请求一下接口数据,你发现接口请求是异步的,没有办法等接口数据返回再传递给reducer 这个时候中间件就产生啦。 redux比较常用的中间件有 redux-saga、redux-thunk、redux-promise等 都是为了解决dispatch action异步处理问题
憧憬博客
2020/07/21
1.3K0
Thunk 函数的含义和用法
本文是《深入掌握 ECMAScript 6 异步编程》系列文章的第二篇。 Generator函数的含义与用法 Thunk函数的含义与用法 co函数库的含义与用法 async函数的含义与用法 一、参数的
ruanyf
2018/04/12
1K0
Thunk 函数的含义和用法
ATL Thunk机制学习
  ATL模板类库使用Thunk技术来实现与窗口消息相关联的HWND和负责处理消息的对象的this指针之间的映射。      ATL中窗口类注册时,窗口过程函数缺省值都是StartWindowProc,当创建窗口产生第一条消息时将调用此函数。 StartWindowProc是CWindowImplBase的一个静态成员函数,它的工作是建立CWindowImpl派生对象的HWND与对象的 this指针之间的映射。在新的HWND被缓存到WindowImpl派生对象的成员数据中之后,对象真正的窗口过程将替代 StartWindowProc窗口过程,并且窗口过程参数HWND被替换成对象指针值。
雪影
2018/08/02
8140
前端react面试题(必备)2
this.props是组件之间沟通的一个接口,原则上来讲,它只能从父组件流向子组件。React具有浓重的函数式编程的思想。
beifeng1996
2023/01/04
2.3K0
Thunk程序的实现原理以及在iOS中的应用(二)
thunk程序其实就是一段代码块,这段代码块可以在运行时动态构造也可以在编译时构造。thunk程序除了在第一篇文章中介绍的用途外还可以作为某些真实函数调用的跳板(trampoline)代码,以及解决一些函数参数不一致的调用对接问题。从设计模式的角度来讲thunk程序可以作为一个适配器(Adapter)。本文将重点介绍如何通过编译时的静态代码来实现thunk程序的方法,以便解决上一篇文章对于iOS系统下指令动态构造的约束限制的问题。
欧阳大哥2013
2019/03/05
1.1K0
如何序列化Js中的并发操作:回调,承诺和异步等待
我们经常不关心并发操作的完成顺序。例如,假设我们有一个Web服务器处理来自客户端的请求。每个请求所花费的时间可能会有所不同,响应返回的顺序也无关紧要
itclanCoder
2020/10/28
3.2K0
如何序列化Js中的并发操作:回调,承诺和异步等待
深度剖析github上15.1k Star项目:redux-thunk
日益忙碌的一周又过去了,是时候开始每周一次的总结复盘了,今天笔者就来剖析一下github中star数15.1k的开源项目redux-thunk。
徐小夕
2020/08/20
7580
深度剖析github上15.1k Star项目:redux-thunk
redux原来如此简单
redux是专门为react开发的,但并不是只能用于react,可以用于任何界面库。
frontoldman
2019/09/03
7480
应用connected-react-router和redux-thunk打通react路由孤立
在我们开发过程中,很多时候,我们需要让组件共享某些数据,虽然可以通过组件传递数据实现数据共享,但是如果组件之间不是父子关系的话,数据传递是非常麻烦的,而且容易让代码的可读性降低,这时候我们就需要一个 state(状态)管理工具。常见的状态管理工具有 redux,mobx,这里选择 redux 进行状态管理。值得注意的是 React 16.3 带来了全新的Context API,我们也可以使用新的 Context API 做状态管理。Redux 是负责组织 state 的工具,但你也要考虑它是否适合你的情况。
Run丘比特
2020/11/19
2.4K0
应用connected-react-router和redux-thunk打通react路由孤立

相似问题

javascript - redux thunk不等待任何承诺

49

使用Typescript的Redux Thunk

11

如何添加‘`redux thunk`’和‘`redux承诺’?

25

React Redux-Thunk with Typescript

25

Redux thunk:从出动行动中返回承诺

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文