concatMap operator (, exitMap ReactiveX/rxjs 5 TypeScript).
, :
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/concatMap';
import 'rxjs/add/operator/do';
var urls = [
'https://httpbin.org/get?1',
'https://httpbin.org/get?2',
'https://httpbin.org/get?3',
'https://httpbin.org/get?4',
'https://httpbin.org/get?5',
];
Observable.from(this.urls)
.concatMap(url => http.get(url))
.subscribe(response => console.log(response.url))
;
:
https:
https:
https:
https:
https:
concatMap() ( URL ) Observable . Observable, . , http.get() Observable, Response, .
. plnkr: http://plnkr.co/edit/PJ7SpkNgBjZz2h4uvRpK?p=preview ( app.component.ts)
, ( ?), , , :
http.get('https://httpbin.org/get?1')
.do(response => console.log('Process response', response.url))
.concatMap(response => {
console.log('Previous response', response.url, ' about to run /get?2')
return http.get('https://httpbin.org/get?2')
})
.do(response => console.log('Process response', response.url))
.concatMap(response => {
console.log('Previous response', response.url, ' about to run /get?3')
return http.get('https://httpbin.org/get?3')
})
.subscribe(response => console.log('Done', response.url))
;
:
Process response https://httpbin.org/get?1
Previous response https://httpbin.org/get?1 about to run /get?2
Process response https://httpbin.org/get?2
Previous response https://httpbin.org/get?2 about to run /get?3
Done https://httpbin.org/get?3
, concatMap(), Observable, , http.get(), do() operator , , ( concatMap()).
. plnkr: http://plnkr.co/edit/VFv09dTekK8av1Pu3a75?p=preview ( app.component.ts)