2013-10-01 31 views
0

我在客戶端上使用gevent-socketio,在客戶端上使用gevent-socketiosocket.io.js。連接建立後,客戶端會收到應該呈現的數據。渲染可能需要很長時間(最長10-15秒)。完成後,連接會中止。我會調整性能,但它取決於將呈現的數據,所以我不會顯着降低它。長時間JS過程後如何解決制動連接問題?socket.io和客戶端上的長時間操作

回答

0

我解決了這個問題,將渲染過程劃分爲小型peaces並依次執行它們。例如,如果我需要渲染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執行所需的回調)。