Angular 2 如何从 map 函数 return

Angular 2 how to return from map function

Angular 2 如何从地图 return 如果里面有订阅

getImage(imageId: string): Observable<ImageSource> {

      return this.http.get(`${ImagesUrl}/${imageId}`, { 
        responseType: 'blob', observe: 'response' }).map((response) => {
        // here I am converting blob to base64
            let blob = response; // lets say response is blob

            let reader = new FileReader();
            reader.readAsDataURL(blob);

            reader.onloadend = (e) => {
              // how can I return from here?????
            };
      }
    }

有没有办法仅在 onloadend 事件后从地图 return?

提前致谢

我不知道 FileReader class,但你可以尝试链接所有你必须做的事情(利用流)。

function getImage(imageId: string): Observable<ImageSource> {
  return this.http.get(`${ImagesUrl}/${imageId}`, {responseType: 'blob', observe: 'response'})
      .switchMap((response) => {
        const blob = response;
        const reader = new FileReader();
        reader.readAsDataURL(blob);

        return Observable.fromPromise(new Promise((resolve, reject) => {
          reader.onloadend = resolve;
        }));
      });
}

reader.onloadend = resolve; 是 shorthand 对于

reader.onloadend = (e) => { resolve(e); }

在直播结束时,您将看到 onloadend 发布的活动。如果您需要其他任何东西,只需传递另一个参数即可解决。

您还应该处理 reject 失败的情况。