Не удается остановить интервал внутри асинхронного цикла - Angular 7 - PullRequest
0 голосов
/ 11 апреля 2019

Я создал интервал, который выполняется каждую секунду. Внутри этого интервала у меня есть цикл for, который отправляет запрос на сервер и генерирует Observable. Я хочу остановить интервал, когда условие становится истинным. Хотя условие истинно, интервал продолжается.

private setStatusChecker() {
    const taskInterval = setInterval(() => {
      this.uploadedFiles.forEach((task, index) => {
        if (this.uploadedFiles.length === this.completedTasksNumber || this.stopGetUploadStatusInterval === true) {
          clearInterval(taskInterval);
          this.uploadingProcessActive = false;
          this.stopGetUploadStatusInterval = true;
        }
        if (task.state !== 'SUCCESS') {
          this.getUploadStatus(task.id).subscribe((response: any) => {
            if (response.info === null) {
              return;
            }
            const fileStatus: UploadStatus = {
              id: task.id,
              state: response.state,
            };
            this.uploadedFiles[index] = fileStatus;
          });
        }
        if (task.state === 'SUCCESS') {
          this.completedTasksNumber++;
          task.state = 'COMPLETED';
        }
      });
      this.uploadedFilesCurrentStatus.next(this.uploadedFiles);
    }, 1000);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...