代码之家  ›  专栏  ›  技术社区  ›  Godfather

知道何时用异步方法完成对数组的迭代

  •  2
  • Godfather  · 技术社区  · 6 年前

    假设我有一个字符串数组,我调用一个异步方法,它从中返回一个int。我想知道在我的int数组中什么时候有这些int值。

    let rndStrings = ["a", "b", "c"]
    var rndInts = [Int]()
    rndStrings.forEach { rndString in 
       someAsyncMethod { intResult in
         rndInts.append(intResult)
       }
    }
    

    我想等到RNDINTS有全部3个值

    1 回复  |  直到 6 年前
        1
  •  4
  •   vadian    6 年前

    别等了 . 得到通知 DispatchGroup .

    let rndStrings = ["a", "b", "c"]
    let group = DispatchGroup()
    var rndInts = [Int]()
    rndStrings.forEach { rndString in 
       group.enter()
       someAsyncMethod { intResult in
         rndInts.append(intResult)
         group.leave()
       }
    }
    group.notify(queue: DispatchQueue.main) {
       print("finished")
    }