如何创建RxJS Observable,以便在回调函数完成时返回一个值

时间:2019-09-05 13:23:04

标签: rxjs

我需要创建一个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);
      });
    })
}

1 个答案:

答案 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将永远不会发出,永远不会完成并且永远不会出错。