如何同步闭包?

班克

如何同步闭包?

我有这个代码:

    private func getWeather(parameters: [String : Any],  failure: ((String) -> Void)? = nil ,completion: (() -> Void)? = nil) {

        for _ in 0...10 {

            RequestManager.sharedInstance.request(url: baseURL, parameters: parameters, completion:  { (result) in
                if JSON.parse(result)["name"].string == nil {
                    failure?("Something went wrong. Please, try again later")
                } else {
                    let weatherModel: WeatherModel = WeatherModel(json: JSON.parse(result))
                }
            })
        }
        completion?()

    }

在我的代码中,completion?() 将调用,而不是在所有请求都结束时调用。我需要在所有请求结束时调用 completion?()。我可以吗?

麦迪

由于当前接受的答案不正确,这里有一个正确使用DispatchGroup.

private func getWeather(parameters: [String : Any],  failure: ((String) -> Void)? = nil ,completion: (() -> Void)? = nil) {
    let dispatchGroup = DispatchGroup()
    for _ in 0...10 {
        dispatchGroup.enter()
        RequestManager.sharedInstance.request(url: baseURL, parameters: parameters) { result in
            if JSON.parse(result)["name"].string == nil {
                failure?("Something went wrong. Please, try again later")
            } else {
                let weatherModel: WeatherModel = WeatherModel(json: JSON.parse(result))
            }
            dispatchGroup.leave()
        }
    }

    dispatchGroup.notify(queue: DispatchQueue.main) {
        completion?()
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何理解lambda中的闭包?

来自分类Dev

如何使闭包键入“ extern“ C” fn“

来自分类Dev

如何存储多态闭包?

来自分类Dev

如何删除使用闭包添加的EventListener?

来自分类Dev

如何在scala中实现闭包?

来自分类Dev

addEventListener,for(),索引。如何使用闭包?

来自分类Dev

Groovy DSL:如何隐藏闭包参数?

来自分类Dev

Groovy NodeBuilder:如何传递闭包

来自分类Dev

双闭包如何破坏循环引用?

来自分类Dev

如何调用传递给函数的闭包?

来自分类Dev

如何用反射识别lambda闭包

来自分类Dev

如何包含Google闭包的依赖项

来自分类Dev

如何从闭包调用javascript类函数

来自分类Dev

如何快速访问闭包内部的注释

来自分类Dev

如何用装箱的闭包代替proc?

来自分类Dev

如何为C函数创建闭包

来自分类Dev

Javascript闭包-如何防止内存泄漏

来自分类Dev

如何从闭包返回对闭包参数的引用?

来自分类Dev

闭包如何访问析构变量?

来自分类Dev

如何将变量移出闭包?

来自分类Dev

JavaScript闭包。JS引擎如何选择闭包变量?

来自分类Dev

如何快速使用可变参数闭包?

来自分类Dev

如何创建新的闭包单元对象?

来自分类Dev

闭包如何存储对常量或值的引用

来自分类Dev

如何在方法中调用闭包

来自分类Dev

如何在PHP闭包中使用$ this?

来自分类Dev

如何存储通用闭包?

来自分类Dev

如何“修改”闭包

来自分类Dev

如何从闭包修改闭包外的值?