如何处理异步 sendMessage 调用?

How to handle asynchronous sendMessage calls?

我的应用使用 sendMessage(message:replyHandler:errorHandler:) 与其配套应用(iOS 或 watchOS)通信。

我的理解是,调用这个函数后,必须等到它完成,即直到 replyHandlererrorHandler 被调用,才能再次调用 sendMessage .

在我的例子中,sendMessage 可以被多个异步事件调用。因此,呼叫必须在正在进行的 sendMessage 尚未完成时排队,并且当 sendMessage 完成时,每个最旧的呼叫都必须出队。

我可以想象设置一个 class 将函数参数(messagereplyHandlererrorHandler)存储为属性,并定义一个 fifo 队列像元素这样的对象,因此每次调用 replyHandlererrorHandler 时,都会将一个对象出队并作为 sendMessage 执行。

然而,这对我来说似乎有点尴尬。有没有更简单的方法来处理这个问题?

编辑:

也许这样的排队是由 WatchKit 自动完成的?我在文档中找不到任何内容。

我 运行 在调用 replyHandler 之前调用了 sendMessage(message:replyHandler:errorHandler:) 的几个测试,并且一切正常,即当我停止发送消息时,调用了剩余的 replyHandlers。
所以很明显 sendMessage 呼叫在内部排队,一个人不必关心它。