0
我是新來的swift,並且在任何主要線程工作中都沒有過多的經驗,所以我嘗試提高我的技能,希望得到一些幫助或指導。這是我無法想象的一個概念。使用閉包將同步方法修改爲具有返回類型的同步方法
我有一個類,它通過輸入和輸出流進行通信,應用程序通過輸出流發送,並從輸入流中讀取結果。現在我已經創建了通過回調發送異步的方法,但我希望能夠同步發送,並在更高級別處理線程。 目前我的通信方法看起來是這樣的:
typealias CommunicationCallback = ((CommunicationResult) -> Void)
func sendAsync(send message: String, closure: @escaping CommunicationCallback) {
DispatchQueue.global().async { [weak self] in
guard let strongSelf = self else {
return
}
let messagePair = MessagePair(SendReceiveResult(sent: message, received: nil),
closure)
strongSelf.writeQueue.enqueue(messagePair)
strongSelf.writeFromQueue() //Calls the CommunicationCallback closure after it has read result
}
}
func sendSyncronized(send message: String) -> CommunicationResult {
???
}
是否有包裝一個異步都像上面說的一般方法? 在情況下,我想這完全錯誤,是什麼ID」就像在某些情況下,簡單地可以稱之爲
let result = sendSyncronized("foo")
而不是做
send("foo", closure: { result in
switch result {
case .a:
foo()
base .b:
bar()
}
})
每次,因爲有一些案件中,在等待以前的結果時,我需要做很多順序寫入操作。 歡迎任何幫助!