Остановить некоторые операции, когда ответ получен с сервера - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть форма после заполнения, которую я отправляю в бэкэнд. Если форма действительна, я должен показать всплывающие окна с флажками. Флажки должны начать проверяться, в случае, если ответ от сервера пришел 1700, все флажки должны быть проверены, и всплывающее окно должно быть закрыто, и если ответ не 1700, должна быть проверена пара флажков, но не все, всплывающее окно должно быть закрыто и должно быть перенаправлено на другую страницу. Я могу сделать только ограниченное количество отмеченных флажков (когда ответ не 1700). Но как сделать это по-разному каждый раз? Так что, как только ответ придет с сервера, а не 1700, немедленно прекратите проверку.

public sendApplication(): void {
    if (this.formService.isFormValid(this.formGroup)) {
        this.dialogProcessing
            = this.dialog.open(FoDialogBankVerificationComponent, {
            width: '500px',
            disableClose: true,
            data: this.checkBoxValues,
        });
        this.submit()
            .pipe(
                take(1),
                timeout(10000))
            .subscribe(res => {
                    this.checkBoxValues.forEach((checkbox, index) => {
                        this.interval = setInterval(() => {
                            checkbox.isChecked = true;
                            if (res.id === 1700) {
                                if (index === this.checkBoxValues.length - 1) {
                                    this.status = res.id;
                                    this.dialogProcessing.close();
                                }
                            } else {
                                if (index === 3) {
                                    this.dialogProcessing.close();
                                    this.navigationService.navigateToDeniedPage();
                                }
                            }
                            clearInterval(this.interval);
                        }, index * 1000);
                    });
                },
                () => {
                    this.dialogProcessing.close();
                    this.notificationService.showGetErrorNotification();
                });
    }
}
...