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