0

gevent-socketio在服务器和socket.io.js客户端上使用。建立连接后,客户端接收应呈现的数据。渲染可能需要很长时间(最多 10 - 15 秒)。完成后,连接中止。我会调整性能,但这取决于将要渲染的数据,所以我不会大幅降低它。如何解决长时间 JS 处理后的制动连接问题?

4

1 回答 1

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 执行的回调)。

于 2013-10-02T07:50:05.547 回答