После звонка Channel.close()
как лучше всего дождаться, пока Channel.isClosedForReceive
станет правдой?
Я обрабатываю сообщения по порядку и хочу вернуть максимальное количество сообщений, обработанных после вызова Channel.close()
. Однако, если я просто возьму максимальное обработанное сообщение после вызова close()
, могут быть некоторые сообщения в канале до того, как будет использован «близкий токен», в результате чего реальное максимальное обработанное сообщение будет больше, чем возвращаемое значение.
Основываясь на документе для Channel.close()
, я думаю, что Channel.isClosedForReceive - это то, чего мне следует ждать. Но я ожидал, что какая-то функция приостановки подождет, а не будет опрашивать ее статус.
/**
* Immediately after invocation of this function
* [isClosedForSend] starts returning `true`. However, [isClosedForReceive][ReceiveChannel.isClosedForReceive]
* on the side of [ReceiveChannel] starts returning `true` only after all previously sent elements
* are received.
**/