Freigeben über


Client-API-Ausführungskontext

Der Ausführungskontext definiert den Ereigniskontext, an dem Ihr Code ausgeführt wird. Der Ausführungskontext wird übergeben, wenn ein Ereignis auf einem Formular oder Raster auftritt. Verwenden Sie es in Ihrem Ereignishandler, um verschiedene Aufgaben auszuführen, z. B. um Formularkontext oder Gridkontext zu bestimmen oder das Speicherereignis zu verwalten.

Der Ausführungskontext wird in eine der folgenden Weisen übergeben:

  • Definieren von Ereignishandlern mithilfe der Benutzerschnittstelle: Der Ausführungskontext ist ein optionaler Parameter, der an eine JavaScript-Bibliotheksfunktion über einen Ereignishandler übergeben werden kann. Verwenden Sie die Option Ausführungskontext als ersten Parameter übergeben im Handlereigenschaften im Dialogfeld, während den Namen einer Funktion bestimmt wird, um den Ereignisausführungskontext zu übergeben. Der Ausführungskontext ist der erste Parameter, der an eine Funktion übergeben wird.


  • Bestimmen der Eventhandler mithilfe des Codes: Der Ausführungskontext wird automatisch als den ersten Parameter an Funktionen, die den Code verwenden, übergeben. Eine Liste von Methoden, die verwendet werden können, um die Ereignishandler im Code zu definieren, finden Sie unter Funktionen der Ereignisse mithilfe des Codes hinzufügen oder entfernen.

Das Ausführungskontextobjekt bietet viele Methoden für die weitere Arbeit mit dem Kontext. Weitere Informationen: Ausführungskontext (Client-API-Referenz)

Kontextobjekte asynchron verwenden

Es wird nur garantiert, dass der an ein Ereignis übergebene Kontext während des Ereignisses die erwartete Leistung erbringt. Wenn Sie einen Verweis auf einen Kontext nach dem Ende des Ereignisses beibehalten, können Aktionen auftreten, die zu einem unerwarteten Verhalten der Kontextmethoden führen.

Wenn Ihr Ereignishandler beispielsweise eine asynchrone Aktion auslöst, die längere Zeit in Anspruch nimmt, während Sie an einem Verweis auf den Ausführungskontext festhalten, kann es sein, dass der Endbenutzer die aktuelle Seite verlässt, bis das Versprechen eingelöst ist und Sie die Kontextmethode aufrufen. Diese Situation kann dazu führen, dass Methoden wie formContext.getAttribute(<name>).getValue() zurückgeben null, obwohl das Attribut zum Zeitpunkt der Ausführung des ursprünglichen Ereignishandlers einen Wert hatte.

Die folgenden Beispiele zeigen, wo Sie weitere Prüfungen hinzufügen und vorsichtig sein sollten, da die Ereignishandlerfunktion den Ausführungskontext verwendet, nachdem das Ereignis abgeschlossen ist.

Auf den Kontext in einem Versprechen zugreifen

Der Kontext kann sich nach der Lösung eines Promise auf unerwartete Weise ändern.

function onLoad(executionContext) {
    var formContext = executionContext.getFormContext();
    fetch("https://www.contoso.com/").then(
        function (result) {
            // Using formContext or executionContext here may not work as expected
            // because onLoad has already completed when the promise is resolved.
            formContext.getAttribute("name").setValue(result);
        }
    );
}

Zugreifen auf den Kontext nach einer „await“-Anweisung

Der Kontext kann sich nach der Verwendung von await innerhalb einer asynchronen Funktion auf unerwartete Weise ändern.

async function onLoad(executionContext) {
    var formContext = executionContext.getFormContext();
    var result = await fetch("https://www.contoso.com/");
    // Using formContext or executionContext here might not work as expected
    // because the synchronous part of onLoad has already completed.
    formContext.getAttribute("name").setValue(result);
}

Zugreifen auf den Kontext in einer Timeout-Funktion

Der Kontext kann sich auf unerwartete Weise ändern, nachdem mit setTimeout oder setInterval die Ausführung von Code verschoben wurde.

function onLoad(executionContext) {
    var formContext = executionContext.getFormContext();
    if (notReady) {
        setTimeout(function () {
            // Using formContext or executionContext here may not work as expected
            // because onLoad has already completed when this delayed function executes.
            var name = formContext.getAttribute("name").getValue();
        }, 100);
    } else {
        formContext.getAttribute("name").setValue("abc");
    }
}

Formularkontext der Client-API
Rasterkontext der Client-API
Formular- und Rasterkontext in Menübandaktionen

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).