Я создаю небольшое экспресс-приложение, которое в основном просто читает файлы из каталога, переименовывает их, а затем архивирует файлы, теперь часть файлов для чтения и переименования выполняется синхронно, часть архивирования выполняется асинхронно, а затем мое приложение.отображает другое представление, поэтому моя логика выглядит примерно так:
/*
// file read and renaming code here
*/
// Zip files code below:
try {
let files_converted = fs.readdirSync(OUTPUT_DIRECTORY);
let file_converstion_async_array = [];
files_converted.forEach( (e , i) => {
file_converstion_async_array.push( () => zip_Directory( `${OUTPUT_DIRECTORY}/${e}` , `${OUTPUT_DIRECTORY}/${e}.zip` ) );
});
console.log('Files are being zipped...');
file_converstion_async_array.reduce( ( promise_chain , current_promise ) => {
return promise_chain.then( p_results => {
return current_promise().then( c_result => {
// console.log('ZIPPED');
});
});
} , Promise.resolve([]) ).then( () => {
console.log('All Files have been zipped...');
});
} catch (err) {
console.error(err);
}
// Finally render a new view
res.render("finish", {
name: req.body.outputPath
});
Теперь происходит синхронный код, запускается новое представление, а затем асинхронный код продолжает работать в фоновом режиме.То, что я хотел бы сделать, это как только асинхронный код выполняется для моего представления, чтобы быть обновленным новым сообщением, как я могу сделать это, не показывая другое новое представление (что, я не уверен, возможно, потому что я попробовал это, и я верю вамможно использовать res.render
только один раз.), поэтому после того, как все обещания были выполнены, я действительно хотел бы продолжить и вывести новое сообщение в виде.Как мне это сделать?