나는 각도를 배우고 있으며 나는 여전히 관찰 할 수있는 것들에 머리를 감싸려고 노력하고있다.각도로 객체의 여러 배열 속성에서 여러 http 호출을 수행하려면 어떻게해야합니까?
내 응용 프로그램에서는 "objects"라는 개체 배열 속성과 "photos"라는 개체 배열 속성이 (다른 속성들 사이에있는) Project 개체를 반환하는 API 호출을합니다. 각 사진에는 차례대로 "referenceImageUrl"이라는 속성과 "capturedImageUrl"이라는 속성이 있으며 여기에는 인터넷에있는 이미지의 URL이 포함되어 있습니다.
내가하고 싶은 일은 프로젝트를 다운로드 한 후 모든 참조 이미지와 포함 된 캡처 된 이미지를 다운로드하는 것입니다. 프로젝트를 다운로드하는 방법을 알아 냈고 이미지 유형 중 하나에 대해 각 이미지를 https로 호출하는 방법을 생각했습니다. 내가 알아낼 수없는 것은 다운로드 된 프로젝트의 폴더와 이미지를 개별적으로 반복하는 방법뿐만 아니라 각 이미지에 대해 두 가지 별도의 http 호출을 수행하는 방법입니다.
return this.http.get(getProjectUrl, { headers: headers })
.timeout(30000)
.map(this.extractProjectData)
.do(project => {
return this.projectRepository.saveProject(project);
})
.mergeMap(project => { return Observable.from(project.photos) })
.mergeMap(photo => {
//Download each photo and save the photo to the database
// (returns an Observable<Photo>)
return this.photoService.downloadCapturedPhoto(photo);
//QUESTION: How can I also download the reference photos
// using this.this.photoService.downloadReferencePhoto(photo)?
})
.mergeMap(project => {
//QUESTION: How can I get back to working with the project
here so I can loop folders, assuming that
matrixItemService.downloadCapturedPhoto() does not
return the project object
})
.catch(this.handleErrors);
편집 : 마틴 게시 된 링크
좀 더 읽기를하고 유용한 요리법을 찾고 후, 나는했습니다 여기
는 지금까지이 작동하지 않는 코드 이제 다음과 같이 생각해보십시오 :return this.http.get(getProjectUrl, { headers: headers })
.map(this.extractProjectData)
.do(project => {
downloadedProject = project;
return this.projectRepository.saveProject(project);
})
.mergeMap(project => { return Observable.from(project.photos) })
.mergeMap(photo => {
//Download each photo and save the photo to the database
return this.photoService.downloadReferencePhoto(photo)
.concatMap(photoWithReferenceImage => { return this.photoService.downloadCapturedPhoto(photoWithReferenceImage); })
.concatMap(photoWithBothImages => { return this.matrixItemRepository.savePhoto(photoWithBothImages); });
})
.mergeMap(project => {
//QUESTION: How can I get back to working with the project
here so I can loop folders
})
.catch(this.handleErrors);
나는 사진을 다우면 프로젝트로 작업하는 방법을 "이해할 수 없다" nload 그러면 폴더로 작업 할 수 있습니다.
http://stackoverflow.com/documentation/rxjs/8247/common-recipes/27973/sending-multiple-parallel-http-requests#t=201705082301056342059 – martin