adobe / adobe/adobe-client-data-layer
Order of events being added to the adobeDataLayer array.
- 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