Я бы подошел к этому случаю с помощью логики кода, отличной от экспресс-функциональности.Вы можете создать класс, который будет обрабатывать загрузку каталога, а также иметь состояние для этого процесса, которое вы можете включать и выключать (я полагаю, что процесс загрузки включает в себя вызовы нескольких асинхронных функций, поэтому цикл обработки событий это позволяет).Например:
class CatalogLoader {
constructor() {
this.isProcessing = false
}
getCatalog() {
this.isProcessing = true
while(... && this.isProcessing) {
// Huge loading logic
}
this.isProcessing = false
}
}
А в экспресс вы можете добавить ниже api:
app.get('/launch', (req, res) => {
catalogLoader.getCatalog();
}
app.get('/cancelLaunch', (req, res) => {
catalogLoader.isProcessing = false
...
}