2

I have undetermined resources that need to be fetched from a server. I tried to accomplish this by using the repeatElement() and concat() operators like this:

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
})

Unfortunately, repeatElement will just emit an item without waiting for the old one to be handled. I think the reason is that Alamorfire executes in a private serial queue. However, I cannot figure out how to solve this problem.

I used the strategy inspired from here in my Android project. Everything works fine because Retrofit init HTTP request in a synchronous manner.

Community
  • 1
  • 1
YON
  • 1,607
  • 3
  • 18
  • 33

0 Answers0