我有一个从磁盘读取图像的功能。此函数返回带有图像数据的observable。
readImage(inputValue: any, maxSize: number) : Observable<any> {
var file:File = inputValue.files[0];
var myReader:FileReader = new FileReader();
var observable = this.ng2ImgToolsService.resize([file], maxSize, maxSize).flatMap(
(result) => {
return Observable.create((observer) => {
myReader.onloadend = (e) => {
observer.next({imageUrl: myReader.result});
observer.complete();
}
myReader.readAsDataURL(result);
})
}
)
return observable
}
我想从磁盘中并行读取两个图像(相同的文件,但具有不同的调整大小比率)。所以,我调用这个函数两次,forkJoin两个observable,并订阅它。这会执行两次readImage
功能。但是,我没有向订阅者发送任何结果(console.log(results)
未执行)。虽然,next
函数正在由observable调用。如果我不使用forkJoin并且我单独订阅每个observable,那么它们会返回值。
var obs = [this.readImage(event.target, 1400), this.readImage(event.target, 800)];
Observable.forkJoin(...obs).subscribe(
(results) => {
console.log(results);
},
(err) => {
console.log("error loading thumbnail file", err);
this.showMainSpinner = false;
}
);