Alamofire 嵌套请求

2024-01-01

我需要向同一个 API 发出三个不同的请求。这些调用都不依赖于其他调用。我目前的请求嵌套如下:

API.getPopularMovies() { responseObject, error in
        if let results = responseObject {
            self.popularMovies = results

            self.API.getNowPlayingMovies() { responseObject, error in
                if let results = responseObject {
                    self.nowPlayingMovies = results

                    self.API.getUpcomingMovies() { responseObject, error in
                        if let results = responseObject {
                            self.upcomingMovies = results

                            self.movies = [self.popularMovies, self.nowPlayingMovies, self.upcomingMovies]
                            self.tableView.reloadData()
                        }
                    }
                }
            }
        }
    }
}

我觉得这可能不是一个好方法,并且正在寻找一些指导以找到更好的方法来解决这个问题。目前,生成的数组似乎正确填充了我的表视图,但我忍不住觉得这种嵌套方法是不正确的。


如果你的操作都不是依赖的,那你为什么要嵌套它们呢?我发现在第三个完成之前您不会重新加载 UITableView - 如果这是一项硬要求,那么他们are依赖。

当它们相互依赖时,这种嵌套有时被称为“末日金字塔”。清理它的一个好方法是将嵌套代码包装为 monad,这将允许以下操作:

  • 代码可以整齐地链接起来,而不是嵌套,从而提高可读性。
  • 您可以使用单个而不是重复的错误处理
  • 任何最终/始终的任务都可以清晰地表达。

这称为承诺。这里有一个优秀的关于它们如何工作的教程。 http://khanlou.com/2016/08/promises-in-swift/

还有一些很棒的图书馆。承诺工具包 https://github.com/mxcl/PromiseKit是一种流行的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Alamofire 嵌套请求 的相关文章

随机推荐

  • 如何使用函数从管道中获取对象作为字符串?

    以字符串而不是对象形式输出结果的命令 ls Out String Stream Output Directory C MyPath dir1 Mode LastWriteTime Length Name a 2022 01 22 5 34
  • 我们可以使用 JavaScript 来压缩 PDF 文件吗?如果是,如何进行?如果否,为什么?

    我在浏览器上实现了上传文档功能 用户可以一次上传大约 4 5 个文档 然而 当我们上传文件大小在5MB左右且网络连接较慢 在浏览器的开发工具中设置较慢的3G网络 的文档时 由于网络超时 我们无法上传所有文件 为了成功上传尺寸较大且互联网连接
  • 使用 DQN 增加 Cartpole-v0 损失

    您好 我正在尝试训练 DQN 来解决健身房的 Cartpole 问题 由于某种原因Loss https i stack imgur com uHxpR png看起来像这样 橙色线 你们能看一下我的代码并帮忙解决这个问题吗 我已经对超参数进行
  • 根据条件选择 OpenMP 编译指示

    我有一个想要优化的代码 它应该在各种线程中运行 在我的 for 循环中使用不同的调度技术运行一些测试后 我得出的结论是 最适合的方法是在只有一个线程时执行动态调度 否则进行引导 这在 openMP 中可能吗 更准确地说 我希望能够执行以下操
  • 查找项目并更改自定义对象数组中的值 - Swift

    我有这门课 class InboxInterests var title var eventID 0 var count var added 0 init title String eventID NSInteger count Strin
  • 如何强制 gmail 收件箱重新加载/刷新?

    我构建了一个使用 Gmail API 中的导入端点的应用程序Gmail Users Messages import 克隆电子邮件但允许更改主题 然后 它使用删除端点删除原始 旧消息Gmail Users Messages remove 我想
  • java字节码-小于int的类型的表示

    在我大学的一个项目中 我直接使用 Java 字节码 浏览 JVM 可用指令列表后 http en wikipedia org wiki Java bytecode instruction listings http en wikipedia
  • HTML 图像 src 区分大小写

    我的图像文件夹名称大写 但是src是小写的 所以这不是加载图像 我无法将所有图像文件夹设置为小写 因此我想更改代码以采用不区分大小写的路径 我有一个这样的链接 a href http www google com img src image
  • 构建 Android NDK 项目时出现问题

    我尝试在 Linux Ubuntu 上的 Eclipse 中构建项目 Eclipse 显示错误消息 Build of configuration Default for project FFVideo home art android nd
  • Duck 在 Typescript 中输入 Promise

    假设我有一个日志记录函数 它接受一个函数并记录名称 参数和结果 function log a f args A gt B args A gt B return function args A B console log f name con
  • 使用 jQuery 检查单选按钮后切换内容

    我该如何解决这个问题 我想切换每个单选按钮的内容 如果已选择 另外我如何设置默认选择的单选按钮 option detail hide option click function this next div slideToggle this
  • 如何增加分配给 GlassFish 的内存?

    我想增加 GlassFish 实例的内存分配 有人可以帮我吗 您的答案可以通过管理控制台或命令行 我不介意 找到您正在使用的文件domain xml 即 usr local glassfish 4 1 glassfish domains d
  • 使用枚举绑定组合框选定值

    我无法绑定组合框选定的值 public void InitializePage cbStatus DataSource Enum GetValues typeof CourseStudentStatus 在我的构造函数上 public Ed
  • 状态更改后 useEffect 挂钩未触发

    我有两个兄弟组件 它们通过反应中的上下文共享状态 组件之间共享的状态是一个数组 如果我更新arr在一个组件中声明 我希望另一个组件侦听该更新并相应地执行某些操作 当我使用useEffect在第二个组件中 我监听以下内容的变化arr状态变量
  • 未找到 ui 头文件 (ui_name.h)

    我已经创建了表单 并将其保存在项目目录中 现在我想添加一些代码 所以 我创建了头文件 ifndef SORTDIALOG H define SORTDIALOG H include
  • 我们如何在 iOS 13 的当前 iOS 应用程序中支持深色模式?

    我当前的应用程序是用 objC 和 Swift 开发的 我需要支持暗模式 谁能建议我如何在全球范围内实现这一目标 以下是添加颜色逻辑的代码 该逻辑应出现在深色模式中 if self traitCollection userInterface
  • 如何使用iText在PDF中插入图像并下载到客户端机器?

    我使用 jdbc 从数据库获取数据 然后使用 iText 创建一个可以在客户端计算机上下载的 PDF 文件 该应用程序以 html jsp 编码并在 Apache Tomcat 上运行 我用response getOutputStream立
  • WPF 中的 GridView 动态列宽

  • Pandas - 制作列 dtype 对象或因子

    在 pandas 中 如何将 DataFrame 的列转换为 dtype 对象 或者更好的是 变成一个因素 对于那些会说 R 的人 在 Python 中 我该如何as factor 另外 有什么区别pandas Factor and pan
  • Alamofire 嵌套请求

    我需要向同一个 API 发出三个不同的请求 这些调用都不依赖于其他调用 我目前的请求嵌套如下 API getPopularMovies responseObject error in if let results responseObjec