我有一个问题,我有一个运行的Web应用程序需要处理一些大文件。它可能需要一个5secund所以我同时想要向用户显示文件正在处理或最好将发送信息多少时间结束。这是第一页,我不能发送两次res.render以便如何做到这一点?
var fileinarray = require('./readfile');
app.get('/', function(req, res){
var dataready = fileinarray;
res.render('index', {data: dataready});
});
那我怎么做他的?我读了一些关于socke.io的内容,但我现在不知道如何使用?
感谢您的帮助
答案 0 :(得分:1)
如果您正在使用此请求加载页面(它看起来像),那么您无法以结构化的方式显示进度,因为浏览器正在等待下载您的页面,因此无法显示任何内容该窗口,直到您为它呈现页面。但是,您希望在页面到达之前显示进度。
所以,你必须重新调整工作方式。首先,为了显示进度,浏览器必须有一个可以显示进度的工作页面。这意味着浏览器无法等待页面到达。我能想到的最直接的方法是最初呈现一个shell页面,服务器立即返回(不等待原始内容)。在该shell页面中,您有代码来显示进度,并向服务器发出请求以获取长时间运行的数据。使用Ajax和webSockets可以通过多种方式完成此操作。我将概述一些组合:
全部使用Ajax
主要使用WebSocket