Client API-Ausführungskontext in modellgesteuerten Apps

Der Ausführungskontext definiert den Ereigniskontext, in dem Ihr Code ausgeführt wird. Das System übergibt den Ausführungskontext, wenn ein Ereignis in einem Formular oder Raster auftritt. Verwenden Sie ihn in Ihrem Ereignishandler, um verschiedene Aufgaben auszuführen, z. B. das Bestimmen des formContext - oder gridContext-Ereignisses oder das Verwalten des Speicherereignisses.

Sie können den Ausführungskontext auf folgende Weise übergeben:

  • Definieren von Ereignishandlern mithilfe der Benutzeroberfläche: Der Ausführungskontext ist ein optionaler Parameter, den Sie über einen Ereignishandler an eine JavaScript-Bibliotheksfunktion übergeben können. Verwenden Sie den Pass-Ausführungskontext als erste Parameteroption im Dialogfeld "Handlereigenschaften ", während Sie den Namen der Funktion angeben, um den Ereignisausführungskontext zu übergeben. Der Ausführungskontext ist der erste Parameter, der an eine Funktion übergeben wird.


Das Ausführungskontextobjekt stellt Methoden zum Arbeiten mit dem Kontext bereit. Weitere Informationen finden Sie unter Referenz zu Client-API-Ausführungskontextmethoden.

Asynchrones Verwenden von Kontextobjekten

Der Kontext, den das System an ein Ereignis übergibt, funktioniert nur wie erwartet während des Ereignisses. Wenn Sie einen Verweis auf einen Kontext beibehalten, nachdem das Ereignis beendet wurde, können Aktionen auftreten, die dazu führen, dass sich Kontextmethoden unerwartet verhalten.

Wenn Ihr Ereignishandler beispielsweise eine asynchrone Aktion auslöst, die lange dauert, während Sie einen Verweis auf den Ausführungskontext beibehalten, navigiert der Endbenutzer möglicherweise von der aktuellen Seite weg, wenn das Promise aufgelöst wird und Sie die Kontextmethode aufrufen. Diese Situation kann dazu führen, dass Methoden wie formContext.getAttribute(<name>).getValue()null zurückgeben, obwohl das Attribut zum Zeitpunkt der Ausführung des ursprünglichen Ereignishandlers einen Wert hatte.

In den folgenden Beispielen wird gezeigt, wo Sie weitere Prüfungen hinzufügen sollten und worauf Sie achten sollten, weil die Ereignishandlerfunktion den Ausführungskontext verwendet, nachdem das Ereignis abgeschlossen wurde.

Zugriffskontext in einem Promise

Der Kontext kann sich auf unerwartete Weise ändern, nachdem ein Versprechen aufgelöst wurde.

function onLoad(executionContext) {
  const formContext = executionContext.getFormContext();
  fetch("https://www.contoso.com/").then((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);
  });
}

Auf den Kontext nach einer await-Anweisung zugreifen

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

async function onLoad(executionContext) {
  const formContext = executionContext.getFormContext();
  const 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);
}

Zugriffskontext in einer Timeoutfunktion

Der Kontext kann sich auf unerwartete Weise ändern, nachdem setTimeout oder setInterval verwendet wurden, um die Ausführung von Code zu verzögern.

function onLoad(executionContext) {
  const formContext = executionContext.getFormContext();
    if (notReady) {
    setTimeout(() => {
            // Using formContext or executionContext here may not work as expected
            // because onLoad has already completed when this delayed function executes.
            const 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