Цепочка обслуживания Наблюдаемый звонок в Angular - PullRequest
0 голосов
/ 29 апреля 2020
  • У меня есть список файлов для загрузки в списке.
  • Я хочу сделать что-то только после успешной загрузки всех файлов
 onUpload(event) {
    let files: File[] = event;
    files.forEach(file => {
      const formData = new FormData();
      formData.append('file', file);
      formData.append('dsId', this.rdd.tech_id);
      this.rddService.upload(formData).subscribe(response => {
        // Do Something 
      })
    })
  }

Есть ли способ к этому?

1 Ответ

1 голос
/ 29 апреля 2020

Попробуйте forkJoin. https://www.learnrxjs.io/learn-rxjs/operators/combination/forkjoin

import { forkJoin } from 'rxjs';

onUpload(event) {
    let files: File[] = event;
    forkJoin(
      // spread the array of requests
     // in the map we do the appropriate modifications as well
      ...files.map(file => {
          const formData = new FormData();
          formData.append('file', file);
          formData.append('dsId', this.rdd.tech_id);
          return this.rddService.upload(formData)
      })
    ).subscribe(data => {
     console.log('All done', data);
   });
  }
...