如何防止异步操作完成之前退出命令行工具

牛仔

在swift 2命令行工具(main.swift)中,我具有以下内容:

import Foundation
print("yay")

var request = HTTPTask()
request.GET("http://www.stackoverflow.com", parameters: nil, completionHandler: {(response: HTTPResponse) in
    if let err = response.error {
        print("error: \(err.localizedDescription)")
        return //also notify app of failure as needed
    }
    if let data = response.responseObject as? NSData {
        let str = NSString(data: data, encoding: NSUTF8StringEncoding)
        print("response: \(str)") //prints the HTML of the page
    }
})

控制台显示“是”,然后退出(程序以退出代码结束:0),似乎从未等待请求完成。我如何防止这种情况发生?

该代码使用的是swiftHTTP

我想我可能需要一个NSRunLoop,但是没有快速的例子

Skwashua

我意识到这是一个老问题,但这是我最后解决的方法。使用DispatchGroup

let dispatchGroup = DispatchGroup()

for someItem in items {
    dispatchGroup.enter()
    doSomeAsyncWork(item: someItem) {
        dispatchGroup.leave()
    }
}

dispatchGroup.notify(queue: DispatchQueue.main) {
    exit(EXIT_SUCCESS)
}
dispatchMain()

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章