一个常见的抽象概念: Effect

概括来说,从 Saga 内触发异步操作(Side Effect)总是由 yield 一些声明式的 Effect 来完成的 (你也可以直接 yield Promise,但是这会让测试变得困难,就像我们在第一节中看到的一样)。

一个 Saga 所做的实际上是组合那些所有的 Effect,共同实现所需的控制流。 最简单的例子是直接把 yield 一个接一个地放置来对序列化 yield Effect。你也可以使用熟悉的控制流操作符(if, while, for) 来实现更复杂的控制流。

我们已经看到,使用 Effect 诸如 callput,与高阶 API 如 takeEvery 相结合,让我们实现与 redux-thunk 同样的东西, 但又有额外的易于测试的好处。

redux-saga 相比 redux-thunk 还提供了另一种好处。 在「高级」一节,你会遇到一些更强大的 Effect,让你可以表达更复杂的控制流的同时,仍然拥有可测试性的好处。

results matching ""

    No results matching ""