2

API 请求周期操作的推荐方式是什么?

即:我通常有3个步骤

  • 请求开始(等待响应)
  • 请求成功完成(并返回一个值)
  • 请求失败(或返回错误)

我可以将这些步骤建模为 3 个动作

  • RequestDidStartAction
  • RequestDidFinishWithSuccessAction(在这里我将值作为动作的属性)
  • RequestDidFinishWithFailureAction(在这里我将错误作为操作的属性)

或者我可以将其建模为一个具有枚举的操作:

struct RequestAction: Action {

    let state: AsyncRequestState<Value, Error>

}

enum AsyncRequestState<S, F> {

    case waiting
    case success(S)
    case failure(F)

}

两种方式哪个更好?还是有更好的选择?

Ps.:我正在使用 ReSwift,但我认为这个问题适用于任何 Redux 实现。

4

1 回答 1

0

在我看来,从我所阅读的内容来看,第一个实现是正确的方法。

操作是将数据从您的应用程序发送到您的商店的信息负载。他们是商店的唯一信息来源

来源:http ://redux.js.org/docs/basics/Actions.html

从哲学的角度来看,作为一个动作是作为存储信息的有效载荷,重要的是要容易地区分不同的有效载荷。从使用的角度来看,它可以是一个嵌套数据集,您可以在需要再次检查操作时对其进行解析。

这方面的示例用例出现在 UNDO 中,当您执行删除操作并且想要撤消该操作时,如果 ACTIONS 多种多样,这将有很大帮助。因为它有助于确定要撤消的操作。考虑同时发生多个 API 调用,现在您必须跟踪它是什么操作以及它是哪个 API 调用,因此最好将操作分开,以便从嵌套数据结构检查类型的复杂性不会出现。

于 2017-08-22T05:03:21.553 回答