如何使用任何高阶运算符保留中间数据?

时间:2019-01-03 14:27:55

标签: javascript rxjs

我正在使用switchMapmergeMap,并且需要保留一些额外的数据。

查看代码

    from(fileList)
      .pipe(
        mergeMap((file: File) => {
          return this.s3Service.checkExists(file);
        })
      )
      .subscribe((hash: any) => {
         // I want to access to the `file:File` here as well
        console.log(`hash exists`, hash, file);
      });

如何实现?

1 个答案:

答案 0 :(得分:1)

s3Service.checkExists方法的结果映射到包含原始文件的对象:

from(fileList)
  .pipe(
    mergeMap((file: File) => {
      return this.s3Service.checkExists(file).pipe(map(hash => ({hash, file})));
    })
  )
  .subscribe(data => {
     // I want to access to the `file:File` here as well
    console.log(`hash exists`, data.hash, data.file);
  });