Уведомление для экспресс-приложения после рендеринга маршрута - PullRequest
0 голосов
/ 11 июля 2019

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

Как я могу уведомить событие после того, как рендеринг уже произошел.

Ниже представлен шаблон вида и файл маршрута.

 var express = require('express');
 var router = express.Router();
 var tokens = require('../tokens.js');
 var graph = require('../graph.js');

 /* GET /attachments */
 router.get('/',
 async function(req, res) {
   if (!req.isAuthenticated()) {
  // Redirect unauthenticated requests to home page
  res.redirect('/')
  } else {
  let params = {
    active: { attachments: true }
  };

  // Get the access token
  var accessToken;
  try {
    accessToken = await tokens.getAccessToken(req);
  } catch (err) {
    req.flash('error_msg', {
      message: 'Could not get access token. Try signing out and signing 
   in again.',
      debug: JSON.stringify(err)
    });
  }

  if (accessToken && accessToken.length > 0) {
    try {
      // Get the mail attachments
      graph.getMailattachments(accessToken);

    } catch (err) {
      req.flash('error_msg', {
        message: 'Could not fetch mail attachments',
        debug: JSON.stringify(err)
      });
    }
  }

  res.render('attachments');
}
}
);

module.exports = router;

// файл шаблона

<h1>Attachments are being downloaded</h1>
<div></div>

<div class="progress">
   <div class="progress-bar progress-bar-striped progress-bar-animated" 
    role="progressbar" aria-valuenow="100" aria-valuemin="0" aria- 
    valuemax="100" style="width: 100%"></div>
</div>
...