SpreadJS製品ヘルプ
suspendEventおよびresumeEvent
パフォーマンス向上 > suspendEventおよびresumeEvent

ユーザーがAPIを呼び出してデータを変更したり、既存のスタイルを変更したりするたびに、CellChangedイベントが発生します。 イベントが短い時間枠で繰り返し発生される場合、大きなオーバーヘッドが発生し、全体的なパフォーマンスが減少される可能性があります。

したがって、一度に多くの変更を組み込むことを計画しているが、Spreadイベントを発生させたくない場合は、suspendEventメソッドとresumeEventメソッドを使用することをお勧めします。

suspendEventメソッドは、すべての変更が完了するまでイベント処理を停止し、resumeEventメソッドがイベント処理を復元します。従って、これらの2つのメソッドを使用してイベントを管理することでSpreadJSのパフォーマンスを向上できます。

次のコードは、SpreadJSで操作する際、suspendEventメソッドとresumeEventメソッドでパフォーマンスを向上する方法を示します。

JavaScript
コードのコピー
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
spread.bind(GC.Spread.Sheets.Events.CellChanged, function (sender, args) {
console.log(sheet.getValue(args.row, args.col) + "の値を持つ[" + args.row + "," + args.col + "]セルでCellChangedイベントが発生します");
});
spread.suspendPaint();
spread.suspendEvent();
for (var i = 0; i < 20; i++) {
for (var j = 0; j < 10; j++) {
sheet.setValue(i, j, "111");
}
}
spread.resumeEvent();
spread.resumePaint();
/* この場合、CellChangedイベントがセル[22,2]の場合のみ発生し、
   他のセルの場合は発生しません。セル[22, 2]の値がsuspendEvent()とresumeEvent()メソッドの境界の後に設定されているからです。*/
sheet.setValue(22, 2, "222");