Я не уверен, правильно ли я вас понимаю, но ваш код выполняет следующие действия:
Метод askToReadyRecordVideo
будет вызываться каждые 3 секунды, пока не истечет 10 секунд (будет три вызова, по 3 с, 6 с и 9 с).
Ваша наблюдаемая observer
выдаст результаты этих вызовов сервера.
Если вы хотите отменить процесс после первого успешного ответа, добавьте следующее:
.filter(resp => /* return true when resp indicates success */)
.take(1)
Если каждый ответ является успешным (то есть ошибки обозначаются событием ошибки, проталкиваемым через наблюдаемое), просто пропустите строку filter
.
Кстати: будьте осторожны при передаче обратных вызовов, чтобы избежать неожиданностей о том, что this
означает в askToReadyRecordVideos
. Вы можете использовать flatMap(() => this.askToReadyRecordVideo())
или flatMap(this.askToReadyRecordVideo.bind(this))
вместо flatMap(this.askToReadyRecordVideo)
.