我有一个可观察到的对象数组。我需要使用哪些管道操作符将其转换为Observable,以便我可以对每个对象执行操作?
我需要做些什么来阻止$让它像obs2 $一样发出?
const obs$ = of([{ opponent: 'Walton', team: 'varsity', gametime: new Date() },
{ opponent: 'Scott', team: 'varsity', gametime: new Date() },
{ opponent: 'Dixie', team: 'varsity', gametime: new Date() },
{ opponent: 'Highlands', team: 'freshmen', gametime: new Date() }])
.pipe(
tap(console.log)
);
obs$.subscribe(a =>
console.log(a)
);
const obs2$ = of({ opponent: 'Walton', team: 'varsity', gametime: new Date() },
{ opponent: 'Scott', team: 'varsity', gametime: new Date() },
{ opponent: 'Dixie', team: 'varsity', gametime: new Date() },
{ opponent: 'Highlands', team: 'freshmen', gametime: new Date() })
.pipe(
tap(console.log)
);
obs2$.subscribe(a =>
console.log(a)
);
答案 0 :(得分:2)
您需要mergeAll
:
of([2, 3, 4]).pipe(
mergeAll()
).subscribe(v => console.log(v));
// outputs 2, 3, 4
如果您使用from
,它也可以使用:
from([2, 3, 4])
.subscribe(v => console.log(v));
// outputs 2, 3, 4
答案 1 :(得分:2)
只需使用from
observable:
import {Observable, from } from 'rxjs';
// Write TypeScript code!
const myDatas = [{ opponent: 'Walton', team: 'varsity', gametime: new Date() },
{ opponent: 'Scott', team: 'varsity', gametime: new Date() },
{ opponent: 'Dixie', team: 'varsity', gametime: new Date() },
{ opponent: 'Highlands', team: 'freshmen', gametime: new Date() }];
from(myDatas).subscribe(e => console.log(e));
答案 2 :(得分:0)
谢谢您的提问!我不是真的,但我想回答。我认为源Observable无法更改。因此,我们要将数组转换为可观察项。如前所述,from()
运算符可以在这里提供帮助,因为它需要一个值数组并将其作为可观察值的值发出。
因此,解决此问题的一种一次性方法是创建一个对我们有帮助的管道pipe(switchMap(from))
。但是,我想为将来的开发人员创建一个 可重用的解决方案 。像toStream()
这样的运算符,内部具有相同的代码。您可以更改课程名称!
以下是有关我的解决方案的链接:
P.S。请通过这种方式留下一些反馈意见,这样我们可以改善社区并激发他人的帮助。祝你有美好的一天。我希望这个答案是有用的。