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
失败的情况。
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
失败的情况。