当前位置: 首页 > 知识库问答 >
问题:

为什么Redux的开发人员使用中间件来处理异步,而不是等待promise的解决?[副本]

宰父涵忍
2023-03-14

我是Redux的新手,我见过很多人使用一些中间件来处理异步。

我的问题是,我可以这么做:

fetch(myAPI)
  .then(res => res.json())
  .then(res => {
    dispatch({
      type: 'MY_ASYNC_ACTION',
      res
    })
  })

我可以等待promise的解决,然后发送我的同步行动。

使用中间件来处理Redux中的异步而不是仅仅等待promise的解决有什么好处?

我看过很多关于Redux的教程,没有一个是等到promise解决的,我错过了什么?

共有1个答案

景元徽
2023-03-14

使用中间件来处理Redux中的异步而不是仅仅等待promise的解决有什么好处?

将中间件视为您的操作和您的简化程序之间的中间人。这可以使您在不停止主线程(您的流)的情况下灵活地执行异步操作(例如,获取/其他API调用)。并向用户显示回退UI,以指示后台正在发生的事情。

一个简单的用例:您的用户可能希望看到一些数据,并在获取数据时执行其他操作。如果没有中间件,您的用户可能会等待某些事情发生(直到获取解析),但对正在发生的事情没有任何指示。

查看Redux Async Flow以获得更多详细信息,并查看Redux-Saga中间件以处理应用程序中的异步流。

 类似资料:
  • 我正在努力学习如何正确使用async Wait,但我对它有点共同的想法。 在片段中,我试图构建一个对象数组,其中包含我需要的关于我在组件中上传的文件的信息。问题是this.fileInfo中的对象并没有完全等待返回编码图像的promise,而是在我console.logthis.fileInfo时返回此输出: 如您所见,关键图像是一个值未定义的ZoneAwarePromise。你能帮我修一下吗?

  • 我想使用异步并等待处理承诺。我想在下面的示例中使用这个方法: 在执行时,它给了我一个错误 错误: UnhandledPromiseRejectionWarning:未处理得承诺拒绝.这个错误可能是由于抛出一个没有catch块的异步函数内部,或者是由于拒绝了一个未用.catch()处理的承诺。(拒绝ID:3)

  • 我试着去理解promise。所有这些都在使用async Wait的映射函数中,但我似乎返回了挂起的promise,我不明白为什么 这是工作代码,当我有一个.然后解决我的promise 哪个日志与预期一致=[2,3,4,5,6] 现在,为了实现使用async等待的功能,我知道我需要用关键字async包装异步函数中的函数,并等待promise.all 但我似乎总是记录下我的promise{

  • 我正在研究promsies和async/await的用法。 我编写了以下代码,它执行以下操作: 它获取一些数据库数据(使用Knex.js), 处理该数据, 将处理的数据分配到指定的属性中 这3个步骤执行了多次(在下面的代码中,执行了两次),并且始终等待执行: 现在,我正在尝试编写与等效的promise链,这就是我想到的: 但这不太管用。发生的是,在第一个返回之后,中的结束了它的等待,这导致返回-并

  • 但是,了解node.js事件循环会发现: 当然,在后端,有用于DB访问和进程执行的线程和进程。 在C#中,编写带有标记的函数和带有的调用就足够了,这样.NET就可以将它放在另一个线程中。但是,node.js中组织方式不同的东西让我很困惑,async/await函数仍然会阻塞主线程。

  • 我一直试图理解C#中的Async/await和Task,但尽管看了youtube视频,阅读了文档,并参加了pluralsight课程,但一直失败得很厉害。 我希望有人能帮助回答这些稍微抽象的问题,帮助我的大脑摆脱困境。 1.为什么说async/await启用了一个“Asynchonrous”方法,而async关键字本身什么也不做,而await关键字添加了一个挂起点?添加挂起点不是强制方法同步操作,