递归执行rxjs可观测函数
我是RxJs的新手。我试图递归地运行可观察函数,但没有运气。我想按这个顺序打印 表单文本框图标文本区域 这是我到目前为止试过的。任何帮助都将不胜感激递归执行rxjs可观测函数,rxjs,Rxjs,我是RxJs的新手。我试图递归地运行可观察函数,但没有运气。我想按这个顺序打印 表单文本框图标文本区域 这是我到目前为止试过的。任何帮助都将不胜感激 const args = { name: 'form', children: [{ name: 'textbox', children: [{ name: 'icon', children: [] }] }, { name: 'textarea', children: []
const args = {
name: 'form',
children: [{
name: 'textbox',
children: [{
name: 'icon',
children: []
}]
}, {
name: 'textarea',
children: []
}]
};
import { of, from, Observable, concat } from 'rxjs';
import { map, concatAll, combineAll } from 'rxjs/operators';
const render = (component) => {
return new Observable<any>(observer => {
console.log(component.name);
concat(...component.children.map(x => render(x)))
.subscribe(() => observer.next());
});
};
render(args).subscribe(() => console.log('done'));
const args={
名称:'表格',
儿童:[{
名称:“文本框”,
儿童:[{
名称:'图标',
儿童:[]
}]
}, {
名称:'textarea',
儿童:[]
}]
};
从“rxjs”导入{of,from,Observable,concat};
从“rxjs/operators”导入{map,concatAll,combineAll};
常量渲染=(组件)=>{
返回新的可观察对象(观察者=>{
console.log(组件名);
concat(…component.children.map(x=>render(x)))
.subscribe(()=>observer.next());
});
};
render(args).subscribe(()=>console.log('done'));
这给出了正确的顺序。如果我遗漏了什么,请评论:
const{of,concat}=rxjs;
常量args={
名称:'表格',
儿童:[
{
名称:“文本框”,
儿童:[
{
名称:'图标',
儿童:[]
}
]
},
{
名称:'textarea',
儿童:[]
}
]
};
const render=(component)=>concat(of(component),…component.children.map(render));
render(args).subscribe({name})=>console.log(name))代码>
这给出了正确的顺序。如果我遗漏了什么,请评论:
const{of,concat}=rxjs;
常量args={
名称:'表格',
儿童:[
{
名称:“文本框”,
儿童:[
{
名称:'图标',
儿童:[]
}
]
},
{
名称:'textarea',
儿童:[]
}
]
};
const render=(component)=>concat(of(component),…component.children.map(render));
render(args).subscribe({name})=>console.log(name))代码>
非常有魅力。谢谢,很有魅力。谢谢。为什么要使用rxjs转换单个静态结构?我认为你在这项工作中使用了错误的工具。@Davy这是一个示例代码。在实际代码中,而不是在console.log中,会发生一些异步的事情。为什么要使用rxjs转换单个静态结构?我认为你在这项工作中使用了错误的工具。@Davy这是一个示例代码。在实际代码中,而不是在console.log中,将发生一些异步事件。