我需要创建一个RxJS Observable,以便在回调函数完成时返回一个值。
下面是代码,我已经尝试过了。
我想返回“资源”,该资源将在预订loadMarkerImages函数的调用方中返回
loadMarkerImages(markerNameAndImageUrlMap) {
let loader = new PIXI.loaders.Loader();
for (let markerKey in markerNameAndImageUrlMap) {
let imageUrl = markerNameAndImageUrlMap[markerKey];
loader.add(markerKey, imageUrl);
}
Observable.create()
return defer(() => {
loader.load((loader, resources) => {
return of(resources);
});
})
}
答案 0 :(得分:1)
有关如何创建可观察对象的信息,请参见the documentation:
return new Observable(subscriber => {
let loader = new PIXI.loaders.Loader();
for (let markerKey in markerNameAndImageUrlMap) {
let imageUrl = markerNameAndImageUrlMap[markerKey];
loader.add(markerKey, imageUrl);
}
loader.load((loader, resources) => {
subscriber.next(resources);
subscriber.complete();
});
}
但是,如果loader.load()调用可能失败,请确保也处理错误情况。否则,返回的observable将永远不会发出,永远不会完成并且永远不会出错。