큐 및 내역

adobeDataLayer 배열에는 두 개의 역할이 있습니다. ACDL(Adobe 클라이언트 데이터 레이어) 라이브러리가 로드되기 전에 처리 대기 중인 항목의 큐​입니다. 라이브러리가 로드되면 푸시된 데이터 및 이벤트의 내역​이 됩니다.

ACDL이 로드되기 전: 큐 queue

라이브러리가 로드될 때까지 adobeDataLayer은(는) 일반 JavaScript 배열이고 push()은(는) 표준 배열 메서드입니다. 각 푸시는 배열 끝에 항목을 추가하고 다른 작업은 수행하지 않습니다. 따라서 모든 스크립트는 라이브러리를 아직 다운로드하지 않았더라도 언제든지 데이터, 이벤트 및 함수를 푸시할 수 있습니다.

라이브러리가 로드되면 다음 작업을 수행합니다.

  1. 대기 중인 모든 항목을 배열에서 제거합니다.
  2. 자체 버전 push()을(를) 포함하여 동일한 배열에 ACDL 메서드를 추가합니다.
  3. 대기열에 추가된 항목을 원래 순서로 한 번에 하나씩 다시 푸시합니다. 각 항목은 라이브러리가 로드된 후 푸시된 것처럼 처리됩니다.

전역 adobeDataLayer 개체는 전체에서 동일한 배열을 유지합니다. 이전에 저장된 스크립트가 계속 작동합니다.

ACDL이 준비되면 코드 실행 ready

라이브러리가 아직 로드되지 않았을 수 있으므로 push()만 배열에 존재할 수 있습니다. getState() 또는 addEventListener()과(와) 같은 다른 메서드를 호출하려면 함수를 푸시합니다.

window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push(function(dl) {
  console.log(dl.getState());
  dl.addEventListener("click", handleClick);
});

ACDL이 이미 로드된 경우 함수를 즉시 호출합니다. 그렇지 않으면 함수는 대기열에서 기다리고 라이브러리가 로드될 때 앞에 푸시된 항목 뒤에 실행됩니다. 함수는 데이터 레이어를 인수로 받고 this(으)로 받습니다.

IMPORTANT
라이브러리가 로드되는 동안 대기 중인 함수에서 오류가 발생하면 ACDL이 큐 처리를 중지합니다. 해당 함수 이후에 큐에 있는 항목이 손실됩니다. 푸시한 함수 내에서 오류를 catch합니다.

ACDL 로드 후: 내역 history

라이브러리가 로드되면 배열은 푸시된 내용에 대한 기록을 유지합니다. ACDL은 일부 항목을 배열에 추가하고 다른 항목은 제거합니다.

푸시된 항목
스토리지에 유지
데이터 개체
예
event 및 eventInfo 키를 포함한 이벤트 개체
예
함수
아니요. ACDL은 그것을 부르고 그것을 유지하지 않는다.
문자열 또는 숫자와 같은 잘못된 항목
아니요. ACDL은 오류를 기록하고 보관하지 않습니다.

내역에는 푸시한 개체가 들어 있으며 사본은 들어 있지 않습니다. 개체를 푸시한 후 변경하면 기록에 변경 내용이 표시되지만 계산된 상태는 표시되지 않습니다.

adobeDataLayer을(를) 입력하고 배열을 확장하여 브라우저의 개발자 콘솔에서 기록을 검사할 수 있습니다. 내역의 항목 수는 adobeDataLayer.length개입니다.

리스너에서 푸시된 항목 순서 nested-order

이벤트 리스너가 항목을 푸시할 때 ACDL은 해당 리스너를 트리거한 항목의 처리를 완료하기 전에 해당 항목을 처리합니다. 그 결과 리스너가 푸시한 항목이 이를 트리거한 항목 앞에 기록으로 나타납니다.

리스너의 내역 사용 방법 replay

past 또는 all scope이(가) 있는 수신기를 추가하면 ACDL에서 기록의 일치하는 각 항목에 대해 순서대로 수신기를 즉시 호출합니다. 이 재생을 사용하면 태그 라이브러리와 같이 늦게 로드되는 스크립트가 로드되기 전에 발생한 이벤트에 반응할 수 있습니다.

리플레이는 리스너가 추가될 때 배열에 있는 항목을 사용합니다. 기록이 지워지면 지워진 항목이 재생되지 않습니다.

배열을 직접 수정하지 않음 modify

push()을(를) 사용해서만 데이터 계층에 항목을 추가하십시오. pop(), shift(), unshift(), splice(), sort(), reverse(), fill() 또는 copyWithin()과 같이 배열을 변경하는 다른 JavaScript 배열 메서드를 사용하지 마십시오. 이러한 메서드는 ACDL을 무시하므로 계산된 상태와 수신기가 변경 사항을 반영하지 않고 새 수신기에 대한 재생이 일관되지 않게 됩니다.

filter() 또는 find()과 같이 배열을 변경하지 않는 메서드를 사용하여 배열을 읽을 수 있습니다.

내역 지우기 clear

ACDL이 유지하는 모든 푸시는 항목을 배열에 추가합니다. 단일 페이지 애플리케이션과 같이 오랫동안 열려 있는 페이지에서 기록은 계속 증가합니다. 각 가상 페이지 보기 이후와 같이 자연스럽게 나눌 때 지울 수 있습니다.

기록을 지운다고 해서 계산된 상태가 변경되거나 리스너가 제거되지는 않습니다. 나중에 past 또는 all 범위로 추가되는 수신자에 대해 재생되는 항목에만 영향을 줍니다.

  • 태그를 사용하는 경우 ACDL 태그 확장에서 데이터 레이어 기록 지우기 작업을 사용하십시오. 현재 계산된 상태의 스냅샷을 배열에 유지하거나 배열을 비워 둘 수 있습니다.

  • 자체 코드에서 ACDL이 로드된 후 배열의 길이를 0(으)로 설정합니다.

    code language-js
    window.adobeDataLayer.push(function(dl) {
      dl.length = 0;
    });
    
recommendation-more-help
experience-platform-help-collection