用于在管道传输结果时链接异步操作的 GCD 模式

2024-05-01

来自 JavaScript 世界,使用异步 javascript 承诺,我相信在 Swift 中使用 GCD 异步队列也能完成同样的事情。

你能给我举一个例子,其中在队列中指定了 2 到 3 个异步函数,其中一个异步操作将结果提供给第二个,第二个将结果提供给第三个(通常称为管道结果),最后一个结果和错误处理程序。

所有函数在设计上都限制为单个参数。

如果在函数 2 期间出现任何错误,则跳过函数 3,并将错误直接传递到错误处理程序。

寻找原生解决方案而不是任何第三方Promise https://en.wikipedia.org/wiki/Futures_and_promises or Monad https://en.wikipedia.org/wiki/Monad_(functional_programming)图书馆。

欣赏 swift 3.0 代码。

编辑。还从示例中了解到,步骤更像是 GCD 中的手动线性路径,其中开发人员将结果提供给下一个并每次检查错误,任何功能编程都可以使用功能组合 https://en.wikipedia.org/wiki/Function_composition_(computer_science)?

我想避免末日金字塔 https://pbs.twimg.com/media/COYihdoWgAE9q3Y.jpg并寻找一个线性异步编程 http://image.slidesharecdn.com/promisesqonline-130314132109-phpapp01/95/javascript-promisesq-library-11-638.jpg?cb=1363267354.


我已联系 Apple 提出支持请求,他们向我推荐了这个 WWDC15 视频高级 NS 操作 https://developer.apple.com/videos/play/wwdc2015/226/.

我没有看到如何将结果从一个子操作传递到另一个子操作,现在根据此视频,如果有人可以编写一些全面的示例代码,其中一个例程在执行后将结果传递给下一个例程,我会接受答案。

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

用于在管道传输结果时链接异步操作的 GCD 模式 的相关文章

随机推荐

  • 不同元素类型的名称属性的 jQuery 选择器

    我有一个行表 在其中一列中 某些行具有包含静态文本的跨度 某些行具有可供选择的值的选择 该一列中的所有元素都具有相同的名称属性 在我的表单提交中 我遍历行并希望获取所有列的值 我希望有一个 jQuery 选择器语句来从该元素获取值 span
  • Django ModelForm 不保存数据

    我已经尝试过以下帖子中的解决方案 从 ModelForm 保存数据 https stackoverflow com questions 13046488 saving data from modelform 没起作用 ModelForm数据
  • 识别 IR 中的阵列类型

    我一直在尝试使用以下代码来识别 IR 中的数组访问 for BasicBlock iterator ii BB gt begin ii2 ii BB gt end ii Instruction I ii if GetElementPtrIn
  • iPhone 中的应用程序堆大小是多少?

    HI iPhone 中的应用程序堆大小是多少 我的意思是应用程序可以使用 iPhone 中的内存大小 对于 ipod 来说是一样的还是对于 iPhone 或 iPod 来说是不同的 我们可以使用 NSdata 在我们的应用程序中下载的 iP
  • NGINX 与 Tomcat 配置

    我是 Nginx 新手 我需要你的帮助 根据很多论坛我了解到我们所有的静态页面都存储在Nginx中 当有请求到来时 我必须将该请求传递给 tomcat 获取数据 并在 tomcat 生成响应后生成响应 目前 我刚刚做到了 我将请求直接传递给
  • 编码标准维基

    在我的工作地点 我负责创建编码标准文档 一般来说 我们在某种程度上遵循 FxCop 和 StyleCop 工具报告的内容 但我们真正需要的是解释何时使用约定的文档 为什么使用约定 甚至可能是一个简单的示例 将来也可以将其扩展用于其他目的 我
  • pipx 如何知道要使用哪个 Python 版本?

    我是一个坚强的pyenv and poetry开始使用的用户pipx并希望了解更多有关其工作原理的信息 具体来说 我想了解它如何确定安装时使用哪个Python版本 我注意到它似乎在搜索PATH现有的应用程序参考 当您pipx install
  • ASP.NET Core [要求] 不可为 null 的类型

    Here https stackoverflow com questions 6662976 required attribute for an integer value 提出了如何验证不可为空的必需类型的问题 在我的情况下 提供的使字段
  • fbtorch:cmake 找不到 torch 目录

    我正在尝试构建并安装 fbtorch 但是当我使用 cmake 时出现以下错误 CMake Error at CMakeLists txt 9 FIND PACKAGE By not providing FindTorch cmake in
  • 为什么这个“std::atomic_thread_fence”起作用

    首先我想谈一下我对此的一些理解 如有错误请指正 a MFENCE在x86中可以保证全屏障 顺序一致性可防止 STORE STORE STORE LOAD LOAD STORE 和 LOAD LOAD 重新排序 这是根据维基百科 https
  • Firebase 依赖项:“警告:API 'variant.getMergeResources()' 已过时并已被替换”[重复]

    这个问题在这里已经有答案了 我最近开始使用 firebase 并按照官方指南添加了一些依赖项到我的项目中以便能够使用它 以下是我添加到新创建的项目中的依赖项 apply plugin com google gms google servic
  • 如何使用 eloquent/fluent 从单个查询中更新多行?

    我正在学习如何使用 eloquent fluent 从单个查询中插入多行我在这里找到了答案 https stackoverflow com questions 29723865 how to insert multiple rows fro
  • DOM 属性更改时触发事件

    有没有办法在属性更改时触发事件 可能是自定义的 比方说 当IMG src或DIV的innerHtml发生变化时 注意 自 2012 年起 突变事件已从标准中删除 现已弃用 有关如何使用其替代品 请参阅其他答案或文档 MutationObse
  • 在 PHP 中使用消息队列与普通 Cron 作业之间的区别

    我们有一个基于 PHP 构建的大型 Web 应用程序 该应用程序允许安排推文和墙贴 并且有从服务器发出的预定电子邮件 我所说的 计划 是指这些 PHP 脚本计划在特定时间运行cron 大约有 7 个 PHP 文件可以完成上述工作 我一直听说
  • 如何在sql server中获取从当前日期时间到过去7天的过去7天的数据

    您好 我正在使用 pentaho 将表 A 数据从 sql server 加载到 mysql 加载数据时 我只需要从 sql server A 表获取最近 7 天的数据到 mysql 在sql server中createddate列数据类型
  • IllegalStateException:无活动

    我有一个非常奇怪的问题 我一生都无法弄清楚 我有一个即将完成的应用程序 我已经开始在不同版本的 Android 和模拟器中的不同屏幕尺寸 密度上测试它 一切工作正常 直到我使用 Android 3 1 和 3 2 Honeycomb 我得到
  • 模拟三星 Galaxy Tab

    我想使用新的 Samsung Galaxy Tab 平板电脑测试我的应用程序 我应该在模拟器中设置什么参数来模拟该设备 我应该设置什么分辨率和密度 如何表明这是一个大屏幕设备 这款平板电脑支持哪些硬件 最大堆大小是多少 哪个安卓版本 UPD
  • 在Windows应用程序中创建一个文本文件

    我想打开一个文本文件并向该文件写入一些数据 这是我的代码 FileStream fs1 new FileStream D Yourfile txt FileMode OpenOrCreate FileAccess Write StreamW
  • ngClass多次调用方法[重复]

    这个问题在这里已经有答案了 我创建了一个方法并将其附加到 ngClass 以根据条件添加两种样式 我还将数字作为参数传递以在 switch case 中使用 组件 html div class circle div class circle
  • 用于在管道传输结果时链接异步操作的 GCD 模式

    来自 JavaScript 世界 使用异步 javascript 承诺 我相信在 Swift 中使用 GCD 异步队列也能完成同样的事情 你能给我举一个例子 其中在队列中指定了 2 到 3 个异步函数 其中一个异步操作将结果提供给第二个 第