일부 배열에 구성 배열이있는 타일 배열을 가져옵니다. 구성을 가진 구성 요소는 옵션 배열 (옵션 Object 포함) 또는 restURL을 가리키는 optionUrl 중 하나를 가질 수 있습니다. 구성 및 optionUrl이있는 각 타일에 해당 옵션을 추가하는 방법은 무엇입니까? flatMap 및 forkJoin을 시도했지만 optionsUrl에 대한 요청을 완료하지 않은 것처럼 보입니다. 나는 또한 성공없이 mergeMap을 시도했다.조건부로 루프 내포 관찰 가능 조건 내에서 관찰 할 수 있습니다.
아이디어를 얻는 방법에 대한 아이디어가 있으십니까?
여기 optionUrl으로 예를 타일 구조입니다 :
ngOnInit(){
this._myService.getAllTiles()
.subscribe((tiles: Tiles[]) => {
this.tiles = tiles
})
}
내 서비스 :
getAllTiles(): Observable<any>{
return this._http
.get(this._tilesUrl)
.map((result) => result.json().data)
.flatMap((tiles) => {
tiles.map((tile) => {
if (tile.configurations) {
return Observable.forkJoin(
tile.configurations.map((config) => {
if(config.optionsUrl) {
console.log(config);
return this._http.get(config.optionsUrl)
.map((result) => {
let optionArray = [];
config['option'] = optionArray;
let jsonObj = result.json();
let newOptions = jsonObj.data;
console.log(newOptions);
config['option'].push(newOptions);
return config;
})
} else {
return Observable.of(config);
}
})
)
} else {
return Observable.of(tiles)
}
});
return Observable.of(tiles);
})
}
감사합니다. 어떻게 든 도움이되었습니다. 당신이 말한 것처럼 포크에 합류 한 후에도 tile.configurations의 두 번째 맵에 문제가 발생했습니다. 조건을 충족시키지 못했을 때, 더블 타일 또는 이중 설정 항목을 반환했습니다. 일시적으로 옵션 요청을 타일 구성 요소로 옮겼습니다.이 기능은 매력처럼 작동하지만 여전히 forkJoin 솔루션에 대해 궁금합니다. – Tina333
@ Tina333'double tile or double config items'이란 무엇을 의미합니까? 코드에서 optionsUrl 또는 구성을 기반으로 HTTP 요청을 반환하는 것처럼 보입니다. – LLai
다음과 같은 배열을 반환합니다. 0 : {tileObj} 1 : {configObj}, {configObj} 2 : {optionsObj} configObj}, 3 : {tileObj} 4 : {configObj}, {configObj} 조건을 만족하는지 여부에 따라 보이는 것처럼 tileObj 또는 config 객체를 반환합니다. else 문에서 Observable.of (config)를 반환하면 스트림이 예상되는 곳에 undefined를 제공한다고 불평합니다. – Tina333