# suspendEvent 및 resumeEvent

## Content

사용자가 데이터를 변경하거나 기존 스타일을 수정하기 위해 API를 호출할 때마다 CellChanged 이벤트가 발생합니다. 이 이벤트가 짧은 시간 안에 반복적으로 발생하면, 상당한 오버헤드가 발생하여 전체 성능에 부정적인 영향을 줄 수 있습니다.
따라서 많은 변경 사항을 한 번에 적용하되 Spread의 이벤트가 발생하지 않도록 하고 싶을 경우에는 [suspendEvent](/spreadjs/api/classes/GC.Spread.Sheets.Workbook#suspendEvent) 메서드와 [resumeEvent](/spreadjs/api/classes/GC.Spread.Sheets.Workbook#resumeEvent) 메서드를 사용하는 것이 권장됩니다.
suspendEvent 메서드는 모든 변경 작업이 완료될 때까지 이벤트 처리를 중단하고, resumeEvent 메서드는 이벤트 처리를 다시 활성화합니다. 이 두 메서드는 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('CellChanged event fired for Cell[' + args.row + "," + args.col + "] having value " + sheet.getValue(args.row, args.col));
 });
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 이벤트는 Cell[22, 2]에 대해서만 발생
이는 Cell[22, 2]의 값이 suspendEvent()와 resumeEvent() 메서드의 범위 밖에서 설정되었기 때문입니다. */
sheet.setValue(22, 2, "222");
```