首页 > 解决方案 > 将数组转换为 Observable 的类型

问题描述

我想将数组转换为类型Observable<T[]>,并使用了 rxjs 方法“from”。但它返回Observable<T>,有没有办法将数组转换为Observable<T[]>

Player: Observable<T[]>;

convert(){
let tempArr:T[] = Object.values(data) as T[];
let Obsobj = from(tempArr);
this.Player = Obsobj;
}

这是我收到的错误消息, Observable<T>不可分配给类型Observable<T[]>

编辑

即使使用以下代码片段返回类型并不符合预期。

let $sub = new Subject<Array<T>>();
$sub.next(tempArr);
this.Player$ = $sub.asObservable();

因为我希望返回的可观察类型如下。

Observable {_isScalar: false, source: Observable, operator: MapOperator}

但返回以下。

Observable {_isScalar: false, source: Subject}

编辑#2

完整的代码片段。

Player: Observable<B[]>;

convert(data: Dictionary<B>){
   let tempArr:B[] = Object.values(data) as B[];
   let $sub = new Subject<Array<B>>();
   $sub.next(tempArr);
   this.Player$ = $sub.asObservable();
}

这里有什么问题?有什么帮助吗?

标签: javascriptangular

解决方案


Observable.from 文档:对于数组和可迭代对象,所有包含的值都将作为序列发出!因此,您的项目将始终以 T 而不是 T[] 的形式发出

Observable<T[]>执行以下任一操作:

$sub = new Subject<Array<T>>();
this.Player = $sub.asObservable();

或者

this.Player = of(array);

或者

Observable.create((observer) => {observer.next(array)})

推荐阅读