Javascript .NET如何异步获取数据
首先,我试图通过URL中给定的用户ID从数据库中获取所有项目。我正在用ngOnInit()做这件事。每个项目都有其字段语言,它是来自其他表语言的对象列表。此表中的一条记录有一个名为projectId的字段,我试图通过该字段获取每个项目的所有语言。我认为异步接收数据有问题,因为项目接收正确,但每个项目对象中的语言字段为空。我该怎么办Javascript .NET如何异步获取数据,javascript,c#,angular,typescript,Javascript,C#,Angular,Typescript,首先,我试图通过URL中给定的用户ID从数据库中获取所有项目。我正在用ngOnInit()做这件事。每个项目都有其字段语言,它是来自其他表语言的对象列表。此表中的一条记录有一个名为projectId的字段,我试图通过该字段获取每个项目的所有语言。我认为异步接收数据有问题,因为项目接收正确,但每个项目对象中的语言字段为空。我该怎么办 ngOnInit() { this.userId = this.route.snapshot.params['id']; this.getAllPro
ngOnInit() {
this.userId = this.route.snapshot.params['id'];
this.getAllProjectsByUserId(this.userId);
this.getLanguagesByProjectId();
}
getAllProjectsByUserId(id: number) { //receivng all projects for given userId
this.portfolioAppService.getAllProjectsByUserId(id).subscribe((data) => {
this.projectsList = data;
console.log(this.projectsList);
},
error => console.error(error)
);
}
getLanguagesByProjectId() { //receiving all languages for each project
this.projectsList.forEach(x => {
this.portfolioAppService.getLanguagesByProjectId(x.id).subscribe((data) => {
x.languages = data;
console.log(this.projectsList);
},
error => console.error(error)
);
});
}
将对
GetLanguagesByProjection()
的调用移动到收到项目时:
getAllProjectsByUserId(id: number) { //receiving all projects for given userId
this.portfolioAppService.getAllProjectsByUserId(id).subscribe((data) => {
this.projectsList = data;
console.log(this.projectsList);
this.getLanguagesByProjectId();
},
error => console.error(error)
);
}
否则,
此.projectsList
属性还没有所需的值。异步意味着,您不知道数据何时到达。但你叫它,就像它会按顺序到达一样。你的第二个电话取决于第一个。但你不能确定谁先到。因此,要么嵌套订阅并在订阅中调用它们,要么使用RxJS中的合并映射。