我在服务器上使用gevent-socketio
,在客户端上使用socket.io.js
。建立连接后,客户端将接收应呈现的数据。渲染可能需要很长时间(最多10到15秒)。完成后,连接中止。我将调整性能,但它取决于将要呈现的数据,因此我不会大幅减少它。长JS过程后如何解决制动连接问题?
答案 0 :(得分:0)
我解决了这个问题,将渲染过程分为小和平并按顺序执行。例如,如果我需要渲染100个对象,而不是在循环中渲染它们,我只需迭代并存储函数以将每个表渲染为数组。然后我调用以下方法,放置带有动作的数组作为参数执行:
databasy.ui.utils.executeSequentially = function (functions) {
if (functions.length == 0) {
return;
}
setTimeout(function() {
functions[0]();
functions.splice(0, 1);
databasy.ui.utils.executeSequentially(functions);
}, 0);
};
如您所见,第一个函数在setTimeout中使用参数0执行。完成后,将调度下一个函数。它允许触摸循环中的其他回调(包括socket.io执行所需的那些回调)。