> For the complete documentation index, see [llms.txt](https://docs.dfinery.ai/developer-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dfinery.ai/developer-guide/platform/web/advanced-use-case/additional.md).

# 부가 설정

## onInitialized 함수 <a href="#on-initialized" id="on-initialized"></a>

* onInitialized 함수는 SDK가 Init이 완료된 후에 동작해야 하는 로직이 있는 경우에 사용합니다.

{% tabs %}
{% tab title="JavaScript" %}

```javascript
Dfinery.onInitialized(() => {
  // init 후 동작 로직들
});
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import Dfinery from "@igaworks/dfinery-web-sdk";

void Dfinery.onInitialized(() => {
  // init 후 동작 로직들
});
```

{% endtab %}
{% endtabs %}

* 일반적인 이벤트 기록은 `Dfinery.logEvent("EVENT_NAME")` 호출만으로 충분합니다.
* 아래 예시는 이벤트 함수 호출 직후 페이지 이동로직이 있는 경우에만 선택적으로 사용하는 타임아웃 패턴입니다. `logEvent`는 비동기 함수로 Promise를 리턴하므로, 이벤트 전송을 짧게 기다린 뒤 성공/실패와 관계없이 페이지 이동을 계속 진행할 수 있습니다.

```javascript
// init 이후에 함수 실행
window.Dfinery.onInitialized(() => {
  Promise.race([
    window.Dfinery.logEvent("EVENT_NAME"),
    new Promise((resolve, reject) => {
      setTimeout(() => reject("Timed out"), 2000); // 2초동안 성공못하면 실패
    }),
  ])
    .catch((error) => {
      //
    })
    .then(() => {
      // 이동
      window.location.href = "https://www.dfinery.io/crm";
    });
});
```

```typescript
import Dfinery from "@igaworks/dfinery-web-sdk";

// init 이후에 함수 실행
void Dfinery.onInitialized(() => {
  Promise.race([
    Dfinery.logEvent("EVENT_NAME"),
    new Promise((resolve, reject) => {
      setTimeout(() => reject("Timed out"), 2000); // 2초동안 성공못하면 실패
    }),
  ])
    .catch((error) => {
      //
    })
    .then(() => {
      // 이동
      window.location.href = "https://www.dfinery.io/crm";
    });
});
```

{% hint style="info" %}
타임아웃을 조절하여 SDK 오류 발생으로 인한 영향을 줄이세요. 타임아웃 시간과 클라이언트의 네트워크 속도등의 영향으로 상황에 따라 수집이 안될수도 있습니다.
{% endhint %}
