У меня есть неопределенные ресурсы, которые необходимо получить с сервера. Я попытался сделать это, используя операторы repeatElement()
и concat()
следующим образом:
repeatElement(0, CurrentThreadScheduler.instance).map({ _ -> Observable<[Task]> in
// API.getTasks() uses Alamofire to request data
return API.getTasks(loggedUser, after: loggedUser.taskPullTime)
}).concat().takeWhile({ (tasks) -> Bool in
return tasks.count > 0
})
К сожалению, repeatElement
просто выдаст элемент, не дожидаясь обработки старого. Я думаю, причина в том, что Alamorfire выполняется в частной последовательной очереди. Однако я не могу понять, как решить эту проблему.
Я использовал стратегию, вдохновленную здесь в своем проекте Android. Все работает нормально, потому что Retrofit инициирует HTTP-запрос синхронно.