我有一个 Observable 对象流,正在尝试 return 来自数组成员的 Observable<string> 流
I have an Observable object stream and am trying return a Observable<string> stream from an array member
我需要过滤对象列表并从 string[] 成员创建一个独特的可观察流。打字稿 2.9.2
interface Product2 {
id: number;
categories: string[];
}
const products: Product2[] = [
{id: 1, categories: ['abc', 'def']},
{id: 2, categories: ['def', 'xyz']}
];
const products$: Observable<Product2> = from(products);
const allCategories$: Observable<string|void> = products$
.pipe(
map((val: Product2) => { from(val.categories).subscribe(); } ),
distinct()
);
console.log('logging categories');
allCategories$.subscribe(val => console.log(val));
预期 'abc'、'def'、'xyz' 未定义。
map
运算符要求内部函数 return 一个值。您正在 returning undefined
因为那里没有 return
语句。
无论如何,您可以使用 mergeMap
将类别数组展开为单独的发射,然后 distinct()
将完成其工作:
const allCategories$: Observable<string|void> = products$
.pipe(
mergeMap((val: Product2) => val.categories),
distinct()
);
我需要过滤对象列表并从 string[] 成员创建一个独特的可观察流。打字稿 2.9.2
interface Product2 {
id: number;
categories: string[];
}
const products: Product2[] = [
{id: 1, categories: ['abc', 'def']},
{id: 2, categories: ['def', 'xyz']}
];
const products$: Observable<Product2> = from(products);
const allCategories$: Observable<string|void> = products$
.pipe(
map((val: Product2) => { from(val.categories).subscribe(); } ),
distinct()
);
console.log('logging categories');
allCategories$.subscribe(val => console.log(val));
预期 'abc'、'def'、'xyz' 未定义。
map
运算符要求内部函数 return 一个值。您正在 returning undefined
因为那里没有 return
语句。
无论如何,您可以使用 mergeMap
将类别数组展开为单独的发射,然后 distinct()
将完成其工作:
const allCategories$: Observable<string|void> = products$
.pipe(
mergeMap((val: Product2) => val.categories),
distinct()
);