// // SPLoginManager.swift // ShortPlay // // Created by 曾觉新 on 2025/4/8. // import UIKit class SPLoginManager: NSObject { static let manager = SPLoginManager() private(set) var token: SPTokenModel? ///是否正在刷新token private(set) var isRefreshingToken = false override init() { super.init() token = UserDefaults.jx_object(forKey: kSPLoginTokenDefaultsKey, class: SPTokenModel.self) as? SPTokenModel } func setLoginToken(token: SPTokenModel?) { self.token = token UserDefaults.jx_setObject(token, forKey: kSPLoginTokenDefaultsKey) } } extension SPLoginManager { ///游客登录 func requestVisitorLogin(completer: (() -> Void)?) { if isRefreshingToken { completer?() return } isRefreshingToken = true SPNetwork.requestToken { [weak self] token in guard let self = self else { return } self.isRefreshingToken = false completer?() } } func performDependentRequestsWithOperations() { let queue = OperationQueue() // 1. 创建初始请求操作 let initialOperation = BlockOperation { let semaphore = DispatchSemaphore(value: 0) // initialRequest { result in // defer { semaphore.signal() } // // if result.isSuccess { // print("初始请求成功") // } // } semaphore.wait() } // 2. 创建依赖操作 let request1Operation = BlockOperation { let semaphore = DispatchSemaphore(value: 0) // request1 { // print("请求1完成") // semaphore.signal() // } semaphore.wait() } let request2Operation = BlockOperation { let semaphore = DispatchSemaphore(value: 0) // request2 { // print("请求2完成") // semaphore.signal() // } semaphore.wait() } // 3. 设置依赖关系 request1Operation.addDependency(initialOperation) request2Operation.addDependency(initialOperation) // 4. 添加操作到队列 queue.addOperations([initialOperation, request1Operation, request2Operation], waitUntilFinished: false) } }