【发布时间】:2018-12-16 10:01:45
【问题描述】:
我正在构建一个小型快速应用程序,它基本上只是从目录中读取文件重命名它们然后压缩文件,现在文件的读取和重命名部分同步完成,压缩部分异步完成,然后我的应用程序呈现另一个视图,所以我的逻辑如下:
/*
// 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。),所以在所有的承诺都被执行之后,我真的很想继续在视图中呈现一条新消息。我该怎么做呢?
【问题讨论】:
标签: javascript node.js express