1
我有两个函数,func1
和func2
。当一个人打电话时,它应该检查套接字是否连接。如果套接字未连接,它应该将该函数附加到处理程序数组并在套接字连接时调用它。将函数存储到Swift 2.0中稍后的回调函数
func func1(data: NSData) {
if(!socket.isConnected()) {
// how to do here ↓
handlers.append(func1)
startConnectSocket()
return;
}
socket.writeData(data, withTimeout: 0, tag: 0)
}
func func2(data1:NSData , data2:NSData) {
if(!socket.isConnected()){
// how to do here ↓
handlers.append(funky)
startConnectSocket()
return;
}
socket.writeData(data1 + data2, withTimeout: 0, tag: 0)
}
当连接套接字时,调用处理程序中存储的所有函数。
func onSocket(sock: AsyncSocket!, didConnectToHost host: String!, port: UInt16) {
// how to do here ↓
for function in handlers {
// call function
}
}
另一种方式来考虑这样做,这是使用的NSOperation具有依赖性,从而有效地实现了“承诺”的设计。创建一个连接到套接字的操作,另一个根据第一个操作执行func1,另一个执行func2,这可能取决于func1或者只是套接字操作。对于异步的依赖操作,它通常是一个很好的架构。对于这件事,温特是一个很好的wwdc'15谈话。 – farhadf