0

这是我的代码。当我使用“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 ---")
}

4

0 回答 0