for 循环中的 Swift 闭包

2024-02-03

目前我有在循环内执行闭包的代码。我想知道所有闭包何时完成执行。目前,我正在使用一个计数器,并在关闭完成时递增它,然后将其与要执行的次数进行比较。代码如下

var count = 0
var noOfTimes = 10
for i in 0..<noOfTimes {
    someVariable.someClosure {
        result in
        count = count + 1
        if count == noOfTimes {
            //do something
        }
    }
}

有没有更好的方法可以在没有计数器的情况下做到这一点。 谢谢。


您可以使用DispatchGroup为了这。它的工作原理就像一个计数信号量。您可以通过调用来增加计数enter并通过调用减少计数leave。您可以使用以下命令安排在计数达到 0 时执行闭包notify:

let dispatchGroup = DispatchGroup()
var noOfTimes = 10
for i in 0..<noOfTimes {
    dispatchGroup.enter()  //  Enter the dispatch group
    someVariable.someClosure {
        result in
        // Process result
        ...
        dispatchGroup.leave() // Exit dispatch group
    }
}
dispatchGroup.notify(queue: DispatchQueue.main, execute: {
    print("All Done")
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

for 循环中的 Swift 闭包 的相关文章

随机推荐

  • 整个表格变化

    我该如何使用change或所有人的类似活动form元素 我不想使用change分别为每个字段 您可以使用change事件于form元素 const form document querySelector form form addEvent
  • 如何在 JavaScript 中输出 ISO 8601 格式的字符串?

    我有一个Date目的 我如何渲染title以下片段的一部分
  • Python如何从变量的argparse中获取值,而不是变量的名称?

    如果我执行 args svc name 我期望等于 args option1 因为 svc name 的值是 option1 但我收到错误 命名空间 对象没有属性 svc name parser argparse ArgumentParse
  • 在图形 api 中使用 GUID 获取共享点列表项

    我们需要将文档上传到 SharePoint Online 列表 然后向文档添加一些可搜索属性 我们正在使用 Microsoft Graph 上传文档 由于我们需要能够根据不同的条件搜索文档 因此我们将文档上传到列表中 这是请求的快照 str
  • 如何为 MathJax 转义双反斜杠?

    我通过添加以下代码来使 MathJax 与 WordPress 一起使用footer php 它适用于简单的数学符号和方程
  • 导入weka.jar文件

    我是佐治亚州亚特兰大当地一所大学的学生 我正在寻找将 Weka jar 文件合并到我的班级项目的 Eclipse 中 我已经多次尝试使用 Eclipse 将 weka 3 4 jar 文件合并到 java 项目中的 java 构建路径中 每
  • 如何将数据框堆叠在一起(Pandas、Python3)

    假设我有 3 个 Pandas DF DF1 Words Score The Man 2 The Girl 4 Df2 Words2 Score2 The Boy 6 The Mother 7 Df3 Words3 Score3 The S
  • CDI PostConstruct 和易失性字段

    当我们想要有条件地初始化 bean 的某些字段时 使用后构造方法 我们是否需要关心字段的波动性 因为它是多线程环境 比如说 我们有这样的东西 ApplicationScoped public class FooService private
  • 构建我自己的相机应用程序 + 自动捕获图像

    我创建了自己的相机应用程序 当我单击按钮时 它会拍摄照片并将其保存在图库中 我想做的是在不预览和不单击任何按钮的情况下拍摄照片 我的主要活动课 package themiya camera android import java io Fi
  • 如何获取除表单模板、样式、自定义报告之外的所有文档库

    我正在为 SharePoint 2010 构建一个 Web 部件 以获取所有文档库以及对用户有用的信息 这意味着 用户上传的文档等 我不想显示表单模板 样式库 自定义报告等库 我只想仅显示包含有用信息的文档库 如共享文档或任何其他用户将来创
  • Objective-c 确保 var-arg 参数的类型和数量正确

    在 Objective C 中 如果您有一个采用可变参数的函数 那么如何确保格式说明符与传递给函数的实际参数保持一致 这是通过使用 NS FORMAT FUNCTION 宏来完成的 假设您有一个这样的函数 LOG int level NSS
  • 转到行中的第 n 个符号

    如何在 Vim 中将光标移动到左侧第 n 个符号 我看到的解决方案之一是按0n
  • Keras:如何在训练期间在自定义生成器中获取模型预测(或最后一层输出)?

    我制作了一个自定义生成器 在训练期间我需要模型的预测 在针对真实标签进行训练之前对其进行一些计算 因此 我先保存模型 然后调用model predict 就目前的状态而言 from keras models import load mode
  • Python:如何制作具有相同*大小*箱的直方图

    我有一组数据 想制作它的直方图 我需要垃圾箱有相同的size 我的意思是它们必须包含相同数量的对象 而不是更常见的 numpy histogram 问题等距垃圾箱 这自然会以箱宽度为代价 箱宽度通常会不同 我将指定所需的 bin 数量和数据
  • 如何在 SQL Server 2008 中的选择时或之前创建触发器

    USE admin gorace IF EXISTS SELECT name FROM sysobjects WHERE name trScheduler Status Update AND type TR DROP TRIGGER trS
  • fread() c 中的结构

    对于我的作业 我需要使用 fread fwrite 我写 include
  • 将 JavaScript 转换为 Groovy/Java

    我有一些 javascript 代码 Postman 需要转换以便在另一个 API 测试工具 Katalon 中使用 我在更新具有时区差异的日期时遇到错误 尝试使用 TZ 差异更新预期日期时会发生错误 原始 JavaScript Postm
  • 捕获异步 lambda 异常

    我正在 Windows 8 使用 C 上工作 并且在使用时async关键字有一种情况我似乎无法很好地处理异常 该场景涉及启动一个asynclambda 将其发布到 UI 线程上运行 执行 lambda 代码期间发生的异常会在调用线程上重新引
  • 使用 Gradle 自定义 PMD 规则

    我想在使用 gradle 构建的企业项目中使用 gradle PMD 插件 我有一个pmd rules xml文件已经可以工作 但我无法添加自己的java规则 我得到一个类未找到异常 我按照其网站上的教程进行操作 我必须将自己的规则放在哪里
  • for 循环中的 Swift 闭包

    目前我有在循环内执行闭包的代码 我想知道所有闭包何时完成执行 目前 我正在使用一个计数器 并在关闭完成时递增它 然后将其与要执行的次数进行比较 代码如下 var count 0 var noOfTimes 10 for i in 0