这是我的代码。当我使用“swift run”运行程序时,函数 bar() 似乎无法停止并等待信号量。我还测试了 .responseJSON 和 .cURLDescription,但仍然没有结果。
Alamofire 版本为 5.4.3 平台 macOS(.v10_12)
谢谢你的帮助。
/*
main.swift
Alamofire 5.4.3
SwiftyJSON 4.3.0
platforms: [
.macOS(.v10_12),
],
*/
import Foundation
import Alamofire
import SwiftyJSON
print("begin foo")
foo()
print("end foo!")
print("begin bar")
bar()
print("end bar!")
func bar() {
let semaphore = DispatchSemaphore(value: 0)
DispatchQueue.global().async {
AF.request("https://httpbin.org/get").response { response in
debugPrint(response)
print("---- 2 ---")
semaphore.signal()
}
}
print("---- 1 ---")
semaphore.wait()
print("---- 3 ---")
}
func foo() {
let url = URL(string: "https://httpbin.org/get")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
let semaphore = DispatchSemaphore(value: 0)
DispatchQueue.global().async {
URLSession.shared.dataTask(with: request, completionHandler: {
(data: Data?, response: URLResponse?, error: Error?) in
if (error == nil) {
let jsonData = JSON(data as Any)
print(jsonData)
print("---- 2 ---")
} else {
print("---- error ---")
}
semaphore.signal()
}).resume()
}
print("---- 1 ---")
semaphore.wait()
print("---- 3 ---")
}