How to create an RxJS Observable such that it returns a value when call back function completes

落爺英雄遲暮 提交于 2019-12-13 03:11:48

问题


I need to create an RxJS Observable such that it returns a value when call back function completes.

Below is the code, I have tried.

I want to return 'resources' to be returned in the caller subscribing to loadMarkerImages function

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);
      });
    })
}

回答1:


See the documentation for how to create an observable:

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();
  }); 
}

Make sure to also handle the error case if the loader.load() call can fail, though. Otherwise the returned observable will never emit, never complete, and never error.



来源:https://stackoverflow.com/questions/57806507/how-to-create-an-rxjs-observable-such-that-it-returns-a-value-when-call-back-fun

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!