Angular 使用rxjs将loadFBX promise包装为observable

Angular 使用rxjs将loadFBX promise包装为observable,angular,three.js,rxjs,Angular,Three.js,Rxjs,我正在尝试使用threejs加载fbx文件。但是,除了onLoad回调之外,我无法知道网格何时加载。所以我想用一个可观察的。我发现Rxjs“from”似乎有一个加载fromPromise的功能(但包装在from中) load(url:string,onLoad:(object:Group)=>void,onProgress?:(event:ProgressEvent)=>void,onError?:(event:ErrorEvent)=>void):void; loadFBX=(文件名:str

我正在尝试使用threejs加载fbx文件。但是,除了onLoad回调之外,我无法知道网格何时加载。所以我想用一个可观察的。我发现Rxjs“from”似乎有一个加载fromPromise的功能(但包装在from中)

load(url:string,onLoad:(object:Group)=>void,onProgress?:(event:ProgressEvent)=>void,onError?:(event:ErrorEvent)=>void):void;
loadFBX=(文件名:string)=>{
MeshLoader.loader.load('../../assets/mesh/'+fileName+'.FBX',(对象:THREE.Group)=>{
});
}
this.d=from(this.meshLoader.loadFBX('polyhedronDivided'));
this.d=from(new FBXLoader().load('../../assets/mesh/'+'多面体分割'+'.FBX',()=>{}));
这两个作业都无效。我得到:
ERROR-TypeError:您在需要流的地方提供了“undefined”。您可以提供一个可观察的、承诺的、数组的或可引用的。
我以为我是在为该函数提供承诺。。。我不知道我在这件事上哪里出了问题


更新:将loadFBX函数更改为返回一个可观察对象似乎可以做到这一点,但我不知道如何创建和返回该可观察对象…

将数据保存到行为主体似乎可以得到所需的结果

data=新行为主体(未定义);
loadFBX=(文件名:字符串)=>{
MeshLoader.loader.load('../../assets/mesh/'+fileName+'.FBX',
(对象:三组)=>{
this.data.next(对象);
});
}
然后,您可以像这样订阅,这样在加载完成后将返回对象。如果主题未定义,过滤器只是确保代码不会执行

this.meshLoader.data.pipe(
过滤器(x=>x),
轻触(x=>{console.log(x);}))
.subscribe();