Basiscode

Der Basis-Code ermöglicht das Bootstrapping durch Einreihen von Befehlen in die Warteschlange, während Adobe Experience Platform Web SDK asynchron geladen wird. Nach Ausführung des Basis-Codes können Sie jeden Befehl wie configure oder sendEvent sofort aufrufen, ohne sich Gedanken über die Race-Bedingungen oder den Zeitpunkt des Ladevorgangs der Bibliothek machen zu müssen. Nach dem Laden von Web SDK werden Befehle aus der Warteschlange in der Reihenfolge „first-in“ und „first-out“ ausgeführt (in der Reihenfolge, in der sie sich in der Warteschlange befanden).

Befehle geben Promises zurück, auch wenn sie in die Warteschlange gestellt werden. Wenn ein Befehl in die Warteschlange gestellt wird, wird die Zusage nach Ausführung des Befehls aufgelöst oder zurückgewiesen, sobald das Laden der Web-SDK abgeschlossen ist. Wenn das Laden von Web SDK nie abgeschlossen wird (z. B. wenn die Bibliothek nicht geladen wird), bleiben Zusagen in der Warteschlange ausstehend.

Hinzufügen des Basis-Codes

Platzieren Sie den Basis-Code so hoch wie möglich im <head>-Tag vor Skripten, die die Web-SDK aufrufen könnten.

<script>
  !function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
  []).push(o),n[o]=function(){var u=arguments;return new Promise(
  function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
  (window,["alloy"]);
</script>

Laden Sie nach dem Hinzufügen des Basis-Codes die Web-SDK mit der von Ihnen ausgewählten Methode (JavaScriptBibliothekslader oder Tags-Einbettungs-Code). Bei Tag-basierten Implementierungen wird der Basis-Code in der Web-SDK-Tag-Erweiterung 2.34.0 und höher unterstützt.

Wenn der Basis-Code erforderlich ist

  • JavaScript-Bibliothek: Erforderlich. Die JavaScript-Bibliothek beruht auf der Instanz und der Befehlswarteschlange, die der Basis-Code erstellt, sodass der Basis-Code ausgeführt werden muss, bevor die Bibliothek geladen wird. Diese Anforderung gilt unabhängig davon, ob das <script>-Tag asynchron oder synchron ist, da es sich bei der Anforderung um die Ladereihenfolge und nicht um das async-Attribut handelt.
  • NPM-Paket mitcreateInstance(): Nicht erforderlich. Wenn Sie die Bibliothek importieren und createInstance() direkt aufrufen, wird eine Instanzfunktion an Ihren Code zurückgegeben, ohne vom Basis-Code abhängig zu sein.
  • Web SDK-Tag-Erweiterung: Unterstützt, aber normalerweise nicht benötigt. Die Tag-Erweiterung verwendet einen bereits vorhandenen Basis-Code, wenn sie einen findet. Sie müssen den Basis-Code nur hinzufügen, wenn Ihre Implementierung außerhalb Ihrer Tag-Bibliothek auf die Web-SDK verweist. Die meisten Tag-Implementierungen rufen die Web-SDK nur innerhalb von Tag-Regeln oder -Aktionen auf, sodass die meisten nicht den Basis-Code benötigen.

Beispiele

In den Kommentaren in diesem Code-Beispiel wird der Zeitpunkt erläutert, zu dem Befehle in die Warteschlange gestellt und aufgelöst werden. Dieses Beispiel gilt sowohl für die JavaScript-Bibliothek als auch für die Tag-Erweiterung:

<head>
  <script>
    // Calls made before the base code runs are not captured (alloy is not yet defined).
    // Always make sure that the base code runs before any attempt to call commands.
    // alloy("getLibraryInfo").then(console.log).catch(console.error);
  </script>

  <!-- Base code -->
  <script>
    !function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
    []).push(o),n[o]=function(){var u=arguments;return new Promise(
    function(i,l){n.setTimeout(function(){n[o].q.push([i,l,u])})})},n[o].q=[])})}
    (window,["alloy"]);
  </script>

  <!-- Queued command -->
  <script>
    alloy("getLibraryInfo").then(result => {
      console.log("Queued call resolved:", result);
    }).catch(console.error);
  </script>

  <!-- Load the Web SDK using the JavaScript loader -->
  <script src="https://cdn1.adoberesources.net/alloy/<VERSION>/alloy.min.js" async></script>
  <!-- or the tag extension -->
  <!-- <script src=".../launch-<ENV>.min.js" async></script> -->

  <!-- Another call (queued if the library is still loading; immediate if it is ready) -->
  <script>
    alloy("getLibraryInfo").then(result => {
      console.log("Immediate call resolved:", result);
    }).catch(console.error);
  </script>
</head>

SDK-Instanz umbenennen

Sie können die globale Funktion, die Sie aufrufen, umbenennen, indem Sie die letzte Zeile des Basis-Codes ändern. Änderung:

(window,["alloy"]);

An:

(window,["ingot"]);

Durch diese Änderung können Sie Befehle mit ingot anstelle von alloy aufrufen:

ingot("configure", {
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg"
});

Mehrere SDK-Instanzen

Optional können Sie den Basis-Code verwenden, um mehr als eine SDK-Instanz auf einer Seite zu konfigurieren. Weitere ​ finden Sie unter „Verwenden mehrerer WebSDK-Instanzen“.

recommendation-more-help
experience-platform-help-collection