Assume I have array of Ints:
var items = [1, 2, 3, 4, 5]
and a function that takes Int argument and basing on it sends network request:
Operator .concatMap()
guarantees that order remains intact, as opposed to .flatMap()
i.e.
Observable.from([1,2,3,4,5]).concatMap( /* your request code */ )
UPDATE
let source = Observable.from([1,2,3,4,5])
let trigger = BehaviorSubject<Int>(value: 0)
let feed = Observable.zip(source, trigger) { return $0.0 }
feed.concatMap {
/* your request code */
trigger.onNext(0) // possibly in .onComplete of the service call
}