私のアプリケーションでは、ユーザは私の剣道グリッドの複数の行を更新することができます。その情報が私のデータベースに保存された後、私は行を更新する必要があります。しかし、私が行うことができる唯一の方法は、これらのレコードを更新するために私のパーティションとグリッドのすべての行を反復することです。長時間実行されるスクリプトを最適化する方法
これは、長時間実行されるスクリプトエラーの原因となり、永遠にかかります。ブラウザをロックアップします。私の質問は、別のスレッドやバックグラウンドで発生するように自分のイテレーションを最適化する方法はありますか?または、私はレコードを更新することができるより速い方法です。
//maingrid contains 400 records
//10 partitions containing 10 rows changed by user
//100 records needing to be updated.
function updateAssignmentsInUI(partitions) {
for (var i = 0; i < partitions.length; i++) {
for (var j = 0; j < partitions[i].length; j++) {
var mainGrid = $("#mainGrid").data("kendoGrid");
$.each(mainGrid.dataSource.data(), function() {
if (this.RowSelected === true) {
if (this.ID === partitions[i][j].ID) {
var row = mainGrid.dataSource.getByUid(this.uid);
row.set("Changed", "Yes");
}
}
});
}
}
}
これは、10個のパーティションをループその後、10件のレコードをループし、maingridで400のレコードのリスト全体のレコードを検索します。したがって、ユーザーがコントロールを再度取得するまでにかかる時間を想像することができます。
[promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) – emed
@emed:を使用すると、ブラウザは完全な状態になるまでフリーズします。 – NeoSketo