当前位置: 首页 > 网络应用技术

为什么不能与异步一起实现redux-saga等待

时间:2023-03-09 12:21:31 网络应用技术

  小组中有一个小朋友今天问一个问题

  为什么传奇不能使用异步等待实施?

  据推测,已经开始联系Redux-Saga的学生有这个问题。他们为什么使用基因写作和使用异步等待。

  当我开始使用传奇时,我还想问这个问题,但后来我想了解传奇的原则。

  让我们在下面探索它。

  我们将操作从组件中存储,该组件已同步。

  但是在哪里有一些异步过程?中间部分。

  Redux Saga将首先将动作传输到存储。此过程已同步。

  然后将部分传递给Watcher Saga,以查看它是否是监视动作。如果将其移交给工人传奇来处理它,则可以提出工人传奇程序的新动作。这个过程是异步的。

  这是Redux-Saga的原则。该原理相对简单。亮点是异步过程的组织,这是一般的。

  为什么使用发电机组织异步处理的过程?

  不用担心,让我们首先了解什么是一般。

  生成器是生成迭代器,通过收益率返回值的函数。

  迭代设备是具有值和完成属性的对象,用于按顺序穿越集合。

  我们可以调用iterator.next以获取由收益率生成的值。

  您也可以使用array.trol.com或扩展操作魅力,这是迭代器的特征。

  除了下一个方法外,迭代器还具有返回和投掷方法,就像函数中的返回和投掷语句一样。

  例如,使用Iterator。返回以停止以下过程

  使用迭代器。

  换句话说,发电机的执行由执行器控制。何时会从收益率,下一步以及掷球何时由执行器控制。

  执行器可以在下一步的参数之后传递结果,返回并扔到生成器执行后的结果:

  以上代码是一个小传奇,非常简单。

  那么为什么没有异步等待呢?

  当发电机返回的值是承诺时,执行承诺后,只有两个结果:解决和拒绝。该执行器非常固定。自然,通用执行器可以通过呼叫下一步,投掷和返回来撰写通用执行器。

  这是异步等待的原理,但它只是将语法制成的原则。

  异步等待着只是将军的执行器。

  如果等待异步实现Redux-Saga,那么所有异步逻辑都必须在等待的背后命令,这将使异步过程很难进行测试。因此,Redux-Saga本身实现了执行器。

  让我们看一下Saga的这一部分的代码:

  发电机中的产量不是承诺,而是一一效果。这实际上是一个对象。该语句告诉传奇执行器要执行代替命令的命令。

  通过这种方式,将军的执行者根据不同的效果进行不同的实施:

  呼叫效应具有相应的实现,并且POT效应具有相应的实现。换句话说,传奇的发电机执行器并不像异步一样,而是有自己的运行时。

  这有什么好处?

  现在,当我们返回最初的问题时,Redux-Saga可以用异步等待它实施吗?

  是的,但是异步等待是发电机的自动执行器,没有运行时逻辑。有必要在SAGA中编写异步过程。如果您自己实现发电机执行器,则可以删除异步的过程,以便于组织和测试。如果您使用异步等待着实现SAGA,那么您会失去灵魂。

  Redux-Saga的原则是通过行动来存储,然后将异步过程的一部分从Aciton传递到传奇组织。传奇被分为Watcher Saga和Worker Saga.Watcher Saga确定是否应该处理该操作,然后将其交给工作传奇以进行处理。

  发电机生成器是返回迭代器迭代器的函数。迭代器具有下一步,投掷,返回等的方法,需要用表演者执行。

  异步等待着本质上是发电机的自动执行器。

  如果redux传奇与异步等待实现,则很难测试开发人员的命令型组织异步过程。

  因此,Redux-Saga本身实现了一个生成器执行器,该执行器随着运行时间而随之而来。

  除了声明的异步过程外,该语句还具有非常好的测试性。

  发电机 +传奇执行器的设计是Redux-Saga的灵魂,因此不能使用异步等待。