forkJoin不返回任何值angular2

时间:2017-08-21 19:02:22

标签: angular rxjs observable rxjs5 fork-join

我有一个从磁盘读取图像的功能。此函数返回带有图像数据的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;
    }
);

0 个答案:

没有答案