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 に答える