我的应用程序使用sendMessage(message:replyHandler:errorHandler:)
与其配套应用程序(iOS或watchOS)进行通信。
我的理解是,在调用这个函数之后,必须等到它完成,即直到调用replyHandler
或errorHandler
,才能再次调用sendMessage
。
在我的例子中,sendMessage
可以被多个异步事件调用。因此,当正在进行的sendMessage
尚未完成时,呼叫必须排队,并且当sendMessage
完成时,每个最老的呼叫必须被出队。
我可以想象设置一个存储函数参数(message
,replyHandler
和errorHandler
)作为属性的类,并定义一个包含元素等对象的fifo队列,这样每次调用replyHandler
或errorHandler
时,对象都会被出列并执行作为sendMessage
。
但是,这对我来说似乎有点尴尬。有没有更简单的方法来处理这个问题?
编辑:
也许这样的排队是由WatchKit自动完成的?我在文档中找不到任何内容。
我在调用sendMessage(message:replyHandler:errorHandler:)
之前运行了几个调用replyHandler
的测试,一切正常,即当我停止发送消息时,剩余的replyHandler被调用。
因此,显然sendMessage
呼叫在内部排队,而且不必关心它。