Как отключить мат-спиннер, когда я получаю уведомление об успешном/неудачном задании от серверной части

У меня есть асинхронное задание, выполнение которого занимает много времени. Когда задание начинает выполняться, я установил мат-спиннер и установил тайм-аут на 60000 миллисекунд. Но теперь у нас есть служба уведомлений, которая сообщает о статусе выполнения задания. Я хочу отключить счетчик при получении сообщения независимо от того, не удалось ли выполнить задание.

Код для счетчика с тайм-аутом: -

 this.recommendationService
                    .executeCustomerOpportunityMapper(opportuniyMapperJson)
                    .subscribe(
                        response => {
                            this.isExecuteOppRanking = true;
                            this.snakbar.statusBar(
                                "Executing customer opportunity ranking",
                                "Success"
                            );
                            this.spinner.show();
                            setTimeout(() => {
                                this.spinner.hide();

this.loadRankedOpportunities(tableMetadata);
                                this.selectedIndex = 3;
                                this.isExecuteOppRanking = false;
                            }, 60000);

Служба уведомлений о сообщениях: -

this.messageService.messageReceived$.subscribe(data => {
        this.snakbar.statusBar("Platform job status - " + data, "Info");

    });

Я хочу, чтобы время ожидания моего счетчика истекло, когда messageService получает уведомление об успехе/сбое, а не истекает через 60000 мс.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
374
1

Ответы 1

Я предполагаю, что обе ваши подписки расположены в одном компоненте, если вы хотите остановить счетчик, можете ли вы переместить spinner.hide() в другую подписку?

this.messageService.messageReceived$.subscribe(data => {
    this.snakbar.statusBar("Platform job status - " + data, "Info");
    if (data === "done") { // somehow check the status if necessary
        this.spinner.hide();
        this.loadRankedOpportunities(tableMetadata);
        this.selectedIndex = 3;
        this.isExecuteOppRanking = false;
    }
});

this.recommendationService
    .executeCustomerOpportunityMapper(opportuniyMapperJson)
    .subscribe(response => {
        this.isExecuteOppRanking = true;
        this.snakbar.statusBar(
            "Executing customer opportunity ranking",
            "Success"
        );
        this.spinner.show();
     });

Это не работает ... его ошибка броска. Метаданные не определены вне области executeCustomerOpportunity, поэтому, когда я вызываю его в ngOninit, его ошибка броска

Cpt Kitkat 29.01.2019 14:48

Другие вопросы по теме