1

knockout.jsの使用-HTMLテーブルにバインドされているobservableArrayを並べ替える必要があります。列ヘッダーをクリックすると、配列ASCまたはDESCが並べ替えられます。これは非常に一般的なタスクです。

問題は、並べ替えによってUIが約5秒間フリーズすることです。これは、JSがシングルスレッドであることが原因であることがわかります。

私の質問は-時間のかかるノックアウトソーティングの回避策はありますか?ローダーインジケーターなどを表示する方法を意味しますか?

4

1 に答える 1

1

問題は「解決済み」です - 配列の並べ替えは実​​際には非常に高速です。問題は、ページ上の HTML 要素を再レンダリングすることです。

他のユーザーへのアドバイス: 基になる JS 配列の並べ替えは、監視可能な配列の並べ替えよりも少し速いようです (ただし、私は測定しませんでした)。

これはより高速です:

anObsArray().sort(--sorting func here--); // notice brackets after name of anObsArray
anObsArray().valueHasMutated(); // <-- this line is important

これより:

anObsArray.sort(--sorting func here--);
于 2013-03-07T08:56:48.880 に答える