То, что делает TimeUnit.SECONDS.sleep(10)
, вызывает Thread.sleep()
.Это переводит текущий поток в спящий режим на 10 секунд.
Поскольку вы делаете это внутри map
, текущий поток переходит в спящий режим.Код, ожидающий timeOut
, также находится в текущем потоке и не вступает в силу до истечения времени ожидания sleep
.По этой причине вам следует избегать выполнения любых операций, связанных с Thread
, при выполнении реактивного программирования.
Если вы хотите смоделировать длительный процесс в приведенном выше коде, вы можете либо вызвать внешний API, который вы контролируете, чтождет более 3 секунд, прежде чем отправить ответ, или использовать один из операторов delay*
.