每天永不跳舞是对生活的失望
本期共享源代码实现。即使以前没有使用过,也没关系。我将从如何使用它开始,然后逐步替换常用的。
Redux-Saga已经通过发电机本身实现了异步过程管理,因此,如果您不了解生成器,则可以首先理解
源代码的理解仍然很困难
我们从小就学到的用途
这个示例非常简单。单击按钮时,发送一个,更改并显示最新显示
提供中间件,因此创建时需要应用此中间件
您可以看到我们从中获得它,然后执行它以获取真实的中间件,然后将其合并到中间件中。最后,我们需要一个。这是一。我们将启动一次,例如:
这是一个要处理的地方。当我们单击按钮时,我们必须有一个处理此问题的地方
当我们看到时,我们只做一件事。第一个参数完全等于我们以前的参数。毫无疑问,这是监控这一点的作用。当出现时,回调开始执行。一旦回调,并在此回调中启动了请求,结果已分配给结果,最后将结果发送出去。这里的提议实际上是中等的,因此将触发它的执行,如下所示:
收到收到内容时,将存在内容,以便我们的首页显示最新的内容,效果如下
如预期的那样,当您单击按钮时,发送它,然后开始执行。通过执行网络请求,将结果分配给真实,然后发送真实,对其进行处理并更改过程的状态。
整个过程相对简单,并且不难使用。刚才我们已经使用了它。这些也是我们今天的主要目标
让我们开始逐步替换上面使用的API
首先,从入口分析中,我们引用了它。此功能的作用是执行它以获取中间件,同时它具有属性,它会收到一个,以便我们获得其基本结构
我之前已经说过,有一组自身的异步事件处理机制。该机制有一个中心来保存注册的回调并取出回调。清楚为什么要写下这一点)
经过之后,我们只在中间件中做一件事情
因此,很明显,当我们单击按钮发送一个按钮时,它将被执行并通知通知。请处理它。执行的是取出匹配并将其作为参数传递给并执行
现在,我们已经了解了发送的过程。他将取出并匹配先前注册注册的恢复和执行。
注册回调后,完整的代码应像这样
实际上是传递的。当我们执行实际执行时,我们必须注册回调函数,但是它已将这一步骤划分了几层,并且我们逐层将其剥离。
我们传递的执行,获取迭代器迭代器,然后将迭代传递给Proc。我们知道,除非通过,否则每次遇到的生成器将被暂停,以便将其执行到下一个。
要做的主要工作是写一个,执行,如果没有结束,并在正确的时间继续,这将实现自主控制的自动执行,在外面没有手动呼叫
在此步骤中,我们发现它已执行一次,并在此处获得,因此将执行,并将存储返回值。如果是为此,如果未执行发电机,将执行它。然后我们第一次获得的是第二个执行。
在我们继续看到实现之前,我们还没有发现一分。什么是回报值?实际上,这是由这两个低级别低级别组成的高级级别,可能是这样的(不理解 - 深度理解,然后自然地理解原因)
因此,返回值等于返回值,并且返回值相似,但是它不同(所有结构都低于),例如)
返回值实际上等于返回值
注意:我们在这里存放的内容尚未提交给,而是内部定制的发电机
现在看看
在这里打电话,同时包装以解决竞争问题,我们可以忽略
执行,但是通过相应的构建功能,发现,因此,
如下
让我们首先分析这条代码行
这里的执行实际上是我们第一次执行执行。目前,它等效于阻塞。这次,自动执行是下一步。
这次它等同于执行,这就是为什么它可以写入多个并且不需要手动进行
让我们分析两行代码的角色,然后发电机执行迭代器,然后传递并执行迭代器。我们已经分析了内部代码。
整个过程总结在一个句子中,该句子将在找到相应和执行之前先执行(您无法首先理解,然后在使用它时返回)以查看它)
在这里,我简单地写,相应的以及我以后要使用的所有内容,以便您可以理解
对应如下
Runforkeff
runtakeeffect
runcalleffect
runputeffect
我们只是知道处理过程。如果我们知道这一点,那么很容易理解令人难以置信的代码。实际上
输入和输出也很简单,并且电流发生器被生成到中心。
在这一点上,我们的过程已经结束,我们按预期的是发电机回到中心
单击按钮时,我们执行我们之前写过的中间件
它等同于,它将采用匹配函数并从中央注册数组中执行它,而我们在这里获得的实际上是我们之前注册的功能。此函数包含此代码,并在开始时已执行。对应并执行,它将执行一次,同时再次执行发电机。
刚才我们将执行一次,因此代码运行到
与该函数相对应的功能将执行传输函数并输出。这是发电机所在的发电机。由于执行它,它将继续执行,出去,这实际上是在此更改了存储空间。主页已更新。功能将相同。这与事实一样。为什么要编写发电机?执行
它通常在这里被我们撕裂,我们已经实现了。不难发现它将在最后一次执行一次,并且当前执行会自动执行。最终目标是保存注册功能。此功能实际上执行电流,此回调要求我们手动触发。
原始:https://juejin.cn/post/7096690864595927070