1
我想知道如果下面的事情是可以做到:如何返回Http響應?
我需要返回從http請求GET
直接而不是返回Observable<Response>
實例的響應。
的例子可以解釋整個事情有點:
@Injectable()
export class ExampleService {
constructor(@Inject(Http) protected http: Http) { }
static model: { [uri: string]: any } = {}
public get(uri: string): any {
if (typeof ExampleService.model[uri] === 'undefined') {
ExampleService.model[uri] = this.http.get(uri).map(response => response.json()) // additionally do some magic here, it is Observable<any> instance now
}
return ExampleService.model[uri]
}
}
摘要:根據Günter Zöchbauer answer上述方案是不可能的,而不是說我需要使用這樣的事情:
public get(uri: string): Observable<any> {
return new Observable(observer => {
if (!ExampleService.model[uri]) {
let sub = this.http.get(uri).map(response => response.json()).subscribe(
src => observer.next(ExampleService.model[uri] = src),
err => console.error(err),
() => observer.complete()
)
return() => sub.unsubscribe()
}
observer.next(ExampleService.model[uri])
observer.complete()
})
}
此鏈接應該有助於理解問題http://stackoverflow.com/questions/23231909/collect-rxjs-observable-to-array – AngJobs