Как обрабатывать асинхронные вызовы sendMessage? - PullRequest
1 голос
/ 19 марта 2019

Мое приложение связывается с сопутствующим приложением (iOS или watchOS), используя sendMessage(message:replyHandler:errorHandler:).

Насколько я понимаю, после вызова этой функции нужно ждать, пока она не будет завершена, то есть до тех пор, пока не будет вызван replyHandler или errorHandler, прежде чем sendMessage можно будет вызвать снова.

В моем случае sendMessage может быть вызвано несколькими асинхронными событиями.Таким образом, вызовы должны быть поставлены в очередь, в то время как текущий sendMessage еще не завершен, и каждый из старейших вызовов должен быть отменен после завершения sendMessage.

Я могу представить себе создать класс, хранящий параметры функции (message, replyHandler и errorHandler) в качестве свойств, и определить очередь fifo с такими объектами в качестве элементов, чтобы каждый разreplyHandler или errorHandler вызывается, объект снимается с производства и выполняется как sendMessage.

Однако, это кажется мне немного неловким.Есть ли более простой способ решения проблемы?

РЕДАКТИРОВАТЬ:

Может быть, такие очереди создаются автоматически с помощью WatchKit?Я ничего не могу найти в документах.

1 Ответ

0 голосов
/ 23 марта 2019

Я выполнил несколько тестов, которые вызывали sendMessage(message:replyHandler:errorHandler:) до того, как был вызван replyHandler, и все работало правильно, то есть когда я прекратил отправлять сообщения, были вызваны оставшиеся responseHandlers.
Очевидно, что sendMessage вызовы помещаются в очередь внутри, и об этом не нужно заботиться.

...