【发布时间】:2017-12-25 08:07:23
【问题描述】:
我正在使用 Angular2 和 nodejs rest api。我必须为同一任务执行一个或多个 http 请求,因此我使用 Observable.forkJoin() 等待所有请求完成。 我使用 json 解析方法映射结果,然后订阅此结果,但 我无法像以前那样从结果中获取任何 json 属性。
我的服务方法返回 Observable.forkJoin() 本身:
public rename(file:MyFile, newName:string){
let requests = new Array();
for(let i=0; i<file.sources.length; i++){
let url:string = this.serverUrl;
if(src.name === "src1"){
url += "rename/src1";
} else if (src.name === "src2" ){
url += "rename/src2";
}
requests[i] = this.http.get(url)
.map((res:Response) => res.json())
.catch(this.handleError);
}
return Observable.forkJoin(requests);
}
然后我在别处用另一种方法订阅它:
this.api.rename(this.selectedFile, newFileName).subscribe(
rep => {
// The editor tells me "Property 'name' doesn't exist on type '{}'."
console.log(rep[0].name);
},
err => { console.error(err); }
);
服务器正确响应我询问的数据。 rep[0] 设置正确,如下所示:
Object {name: "res.png", id: "HyrBvB6H-", size: 0, type: "", isShared: false…}
我想这是一个打字问题。通常,通过一个简单的 http.get 请求,它会返回一个“任意”对象。这里它返回一个 '[]{}' 对象。 res[0] 是一个“{}”对象,我无法获取它的 json 属性。
我是否正确使用了 Observer.forkJoin()?我错过了什么吗?
提前感谢您的帮助:)
【问题讨论】:
-
如果你让
new Array<any>();怎么办?
标签: json angular observable fork-join