У меня есть приложение для экспресс-узла, использующее рули.У меня есть вид, который загружает файлы из 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>