Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
- Definieren von Ereignishandlern mithilfe von Code: Das System übergibt den Ausführungskontext automatisch als ersten Parameter an funktionen, die mithilfe von Code festgelegt wurden. Eine Liste der Methoden, die Sie zum Definieren von Ereignishandlern im Code verwenden können, finden Sie unter Hinzufügen oder Entfernen von Funktionen zu Ereignissen mit Code.
Das Ausführungskontextobjekt stellt Methoden zum Arbeiten mit dem Kontext bereit. Weitere Informationen finden Sie unter Referenz zu Client-API-Ausführungskontextmethoden.
Asynchrone Verwendung von Kontextobjekten
Der Kontext, den das System an ein Ereignis übergibt, kann während des Ereignisses nur wie erwartet ausgeführt werden. Wenn Sie nach dem Ende des Ereignisses einen Verweis auf einen Kontext beibehalten, können Aktionen auftreten, die dazu führen, dass sich Kontextmethoden unerwartet verhalten.
Wenn Ihr Ereignishandler z. B. eine asynchrone Aktion auslöst, die längere Zeit in Anspruch nimmt, während Sie einen Verweis auf den Ausführungskontext beibehalten, könnte der Endbenutzer die aktuelle Seite bereits verlassen haben, wenn das Versprechen 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.
Die folgenden Beispiele zeigen, wo Sie weitere Überprüfungen hinzufügen und Vorsicht walten lassen sollten, da die Ereignishandlerfunktion den Ausführungskontext nach Abschluss des Ereignisses verwendet.
Zugriff auf Kontext in einem Versprechen
Der Kontext kann sich auf unerwartete Weise ändern, nachdem ein Versprechen aufgelöst wurde.
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);
}
);
}
Zugriff auf den Kontext nach einer await-Anweisung
Der Kontext kann sich nach der Verwendung von await in 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);
}
Zugriff auf den Kontext in einer Timeout-Funktion
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) {
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");
}
}
Ähnliche Artikel
Formularkontext der Client-API
Rasterkontext der Client-API
Formular- und Rasterkontext in Menübandaktionen