Javascript 为什么订阅isn';t调用
我有以下问题:我是否因为没有调用“done”而做错了什么Javascript 为什么订阅isn';t调用,javascript,angular,rxjs,Javascript,Angular,Rxjs,我有以下问题:我是否因为没有调用“done”而做错了什么 @Injectable({ providedIn: 'root' }) export class GetPersonsService { url:string="https://swapi.co/api/people/" persons:Person[]; headers: HttpHeaders = new HttpHeaders() .set('Accept', 'application/json');
@Injectable({
providedIn: 'root'
})
export class GetPersonsService {
url:string="https://swapi.co/api/people/"
persons:Person[];
headers: HttpHeaders = new HttpHeaders()
.set('Accept', 'application/json');
constructor(private http: HttpClient) { }
getPerson(personsId){
return this.http.get<Person[]>(`${this.url}${personsId}/`,{headers:this.headers});
}
getAllPersons(){
let numberOfPersons=88;
const response = [...Array(numberOfPersons).keys()].map(i => this.getPerson(i+1));
return forkJoin(response).pipe(map(value=> value),share());
}
}
这里发生了什么事?为什么我没有在控制台中完成?您没有创建正确的数组。。。对索引量使用数组构造函数,用伪数据(null)填充它,并用map在其上循环。RxJS映射操作符是无用的
getAllPersons(){
const numberOfPersons = 10;
const response = Array(numberOfPersons).fill(null).map((_, i) => this.getPerson(i+1));
return forkJoin(response).pipe(share());
}
更新
用户17似乎不存在。在这种情况下,请在下面找到更新代码:
getAllPersons(){
const numberOfPersons = 88;
const response = Array(numberOfPersons)
.fill(null).map((_, i) => this.getPerson(i+1)
.pipe(catchError(() => of(null))
)
);
return forkJoin(response).pipe(share());
}
您没有创建正确的数组。。。对索引量使用数组构造函数,用伪数据(null)填充它,并用map在其上循环。RxJS映射操作符是无用的
getAllPersons(){
const numberOfPersons = 10;
const response = Array(numberOfPersons).fill(null).map((_, i) => this.getPerson(i+1));
return forkJoin(response).pipe(share());
}
更新
用户17似乎不存在。在这种情况下,请在下面找到更新代码:
getAllPersons(){
const numberOfPersons = 88;
const response = Array(numberOfPersons)
.fill(null).map((_, i) => this.getPerson(i+1)
.pipe(catchError(() => of(null))
)
);
return forkJoin(response).pipe(share());
}
你能做些什么?您所拥有的看起来不错。您的控制台中是否有任何错误?加载资源失败:服务器响应状态为404()core.js:6014 swapi.co/api/people/17/:1问题是我在第17个元素中中断了数据。我需要处理此错误,但即使我添加了err handler,它也会输出此错误。您可以更新您的问题,说明您试图如何处理此错误吗?您所拥有的看起来不错。您的控制台中是否有任何错误?加载资源失败:服务器响应状态为404()core.js:6014 swapi.co/api/people/17/:1问题是我在第17个元素中中断了数据。我需要处理此错误,但即使我添加了err handler,它也会输出此错误。您可以更新您的问题,说明您试图如何处理此错误吗?可以,因为您只有16个用户。如果您试图以
id=17
或更高的身份查找用户,它将返回404-notfound,这很奇怪。如果可以,请再检查一次:Chekout by your:and ngOnInit(){this.getPersons.getPerson(19).subscribe(value=>{//this.persons.push(value);console.log(value);}}输出{name:“Jek Tono Porkins”,身高:“180”,体重:“110”,头发颜色:“棕色”,皮肤颜色:“fair”,…}@graluc请不要在评论中发布代码。它不会格式化,通常不可读。相反,请将代码编辑到原始帖子中,并添加一条说明更新的注释。是的,因为您只有16个用户。如果您试图以id=17
或更高的身份查找用户,它将返回404-notfound,这很奇怪。如果可以,请再检查一次:Chekout by your:and ngOnInit(){this.getPersons.getPerson(19).subscribe(value=>{//this.persons.push(value);console.log(value);}}输出{name:“Jek Tono Porkins”,身高:“180”,体重:“110”,头发颜色:“棕色”,皮肤颜色:“fair”,…}@graluc请不要在评论中发布代码。它不会格式化,通常不可读。相反,将代码编辑到原始帖子中,并添加一条说明更新的注释。