2

我有未确定的资源需要从服务器获取。我试图通过使用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它只会发出一个项目而不等待旧项目被处理。我认为原因是 Alamofire 在私有串行队列中执行。但是,我无法弄清楚如何解决这个问题。

我在我的 Android 项目中使用了从这里获得灵感的策略。一切正常,因为 Retrofit 以同步方式初始化 HTTP 请求。

4

0 回答 0