我有以下代码:
ngOnInit(): void
{
const source = this.categoryService.getCategories();
console.log(source instanceof Observable);
const example = source.map((categor) => categor.map((categories) => {
const links = this.categoryService.countCategoryLinks(categories.id);
const aff = example.merge(links).subscribe(linke => console.log(linke));
return categories.id
}));
}
其中 getCategories()返回一个observable。
在此Observable的每个项目上,我得到 categories.id 字段以运行另一个名为 countCategoryLinks(categories.id)的方法,该方法也返回一个Observable()。< / p>
我的问题是:我只有3个类别(ok),countCategoryLinks()返回3个项目(ok),但上面的代码在控制台中显示无限循环。 两种方法都开始了#34;手动&#34;出于测试目的,不显示任何循环。
问题确实来自上面的代码。
有什么想法吗?
提前致谢和问候
答案 0 :(得分:1)
example.merge(links)
&lt; =您正在使用由映射回调中的map
回调创建的observable,这将导致递归(即循环回自身)。这是使用适当的缩进所付出的代价,因为它更容易看到。
ngOnInit(): void {
const source = this.categoryService.getCategories();
console.log(source instanceof Observable);
const example = source.map((categor) => categor.map((categories) => {
const links = this.categoryService.countCategoryLinks(categories.id);
// this line is the issue. You are using variable example which is being created by the callback this line of code is in
const aff = example.merge(links).subscribe(linke => console.log(linke));
return categories.id
}));
}
我想也许你不想在此时仍然在map
内?