Какова наилучшая практика использования Duration.Inf
?
Лучше всего было бы, чтобы не блокировать с помощью Await
на всех, и использовать какие-то функции обратного вызова для обработки Future
асинхронно, как map
, foreach
, onSuccess
, onFailure
и т.д., в зависимости от вашего использования.
Если вы хотите заблокировать использование Await
по какой-либо причине (на самом деле этого должно быть очень мало), вы должны установить конечный Duration
с разумным пределом. Например, если вы знаете, что someFuture
обычно занимает 5 секунд, возможно, установите тайм-аут на 10 секунд. В противном случае, вызов потока Await
может вешать навсегда, если Future
не завершен.
Ничего хорошего не выйдет из использования Duration.Inf
, если вы не хотите приложение, чтобы зависнуть в ожидании давно назревшая Future
, и делает это абсолютно необходимо. Но в целом лучше разрешить ему сбой, чем вообще не реагировать.