adobe / adobe/adobe-client-data-layer

Order of events being added to the adobeDataLayer array.

Aperta
#142 10 commenti 0 reazioni 0 assegnatari Vedi su GitHub
bug done
Lingua principale
JavaScript
Stelle
122
Fork
28
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Is seems that the ACDL script is adding events to the `adobeDataLayer` array only after the callbacks of the events have completed. This leads to an odd ordering of the event entries in the `adobeDataLayer` array.

Consider the following script:
```html




window.adobeDataLayer = window.adobeDataLayer || [];

window.adobeDataLayer.push(function (dl) {
dl.addEventListener("one", function () {
logItemEvent("2: ", 0);
logItemEvent("2: ", 1);

dl.push({ event: "two" });

logItemEvent("3: ", 0);
logItemEvent("3: ", 1);
});

logItemEvent("1: ", 0);
logItemEvent("1: ", 1);

dl.push({ event: "one" });

logItemEvent("4: ", 0);
logItemEvent("4: ", 1);

function logItemEvent(prependText, item) {
if (dl[item] && dl[item].event) {
return console.log(prependText+"adobeDataLayer["+item+"].event = "+dl[item].event);
}
return console.log(prependText+"adobeDataLayer["+item+"] = "+dl[item]);
}
});


```

The resulting log output is:
```
1: adobeDataLayer[0] = undefined
1: adobeDataLayer[1] = undefined
2: adobeDataLayer[0] = undefined
2: adobeDataLayer[1] = undefined
3: adobeDataLayer[0].event = two
3: adobeDataLayer[1] = undefined
4: adobeDataLayer[0].event = two
4: adobeDataLayer[1].event = one
```

But the expected output would have been:
```
1: adobeDataLayer[0] = undefined
1: adobeDataLayer[1] = undefined
2: adobeDataLayer[0] = one
2: adobeDataLayer[1] = undefined
3: adobeDataLayer[0].event = one
3: adobeDataLayer[1] = two
3: adobeDataLayer[0].event = one
3: adobeDataLayer[1] = two
```

It would be expected that the ACDL appends the event object to the `adobeDataLayer` array prior to calling the callbacks that have been registered to that event, and not after. Because otherwise, notice how the events `one` and `two` end up in the reverse order.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Riproduci l’ordinamento con l’esempio HTML autonomo e osserva quando ogni evento appare in adobeDataLayer rispetto ai relativi callbacks. Traccia i punti di ingresso del push degli eventi e del dispatch dei callbacks, quindi verifica che gli eventi annidati mantengano l’ordine di inserimento e che il contenuto dell’array registrato corrisponda all’output previsto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript
Ambito
frontend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.