我需要一个只能调用一次的函数,你必须等到下一个函数可以被执行
private func receive(){
var inputBuffer = Array<UInt8>(repeating: 0, count: BUFFER_MAX);
let bytesRead = self.inputStream.read(&inputBuffer, maxLength: BUFFER_MAX);
if(bytesRead > 0){
let string = convertToString(byteArray: inputBuffer, length: bytesRead);
// Call if previous is finished
CommandHandler.convert(string);
}
}
我测试了类似的东西:
var dispQueue = DispatchQueue(label: "commandConvert")
...
private func convert(){
dispQueue.sync {
...
}
}
但这不起作用
答案 0 :(得分:0)
我前几天才遇到这个问题。
您可以使用回调或调度组来解决此问题。以下是Dispatch Group解决方案:
array:5 [
0 => array:4 [
"message" => "Message number 1 for first conversation"
"is_seen" => 0
"user_id" => 2
"sent_time" => "2017-08-30 23:28:50"
]
1 => array:4 [
"message" => "Message number 2 for first conversation"
"is_seen" => 1
"user_id" => 1
"sent_time" => "2017-08-29 23:36:27"
]
2 => array:4 [
"message" => "Message number 3 for first conversation"
"is_seen" => 1
"user_id" => 1
"sent_time" => "2017-08-29 23:36:27"
]
3 => array:4 [
"message" => "Message number 4 for first conversation by second user"
"is_seen" => 1
"user_id" => 2
"sent_time" => "2017-08-29 23:36:27"
]
4 => array:4 [
"message" => "Message number 5 for first conversation by second user"
"is_seen" => 1
"user_id" => 2
"sent_time" => "2017-08-29 23:36:27"
]
]