Partager via


Contexte d’exécution de l’API client

Le contexte d’exécution définit le contexte d’événement dans lequel votre code s’exécute. Le contexte d’exécution est passé lorsqu’un événement se produit sur un formulaire ou grille. Utilisez-le dans votre gestionnaire d’événements pour effectuer diverses tâches telles que déterminer formContext ou gridContext, ou gérer l’événement de sauvegarde.

Le contexte d’exécution est transmis de l’une des façons suivantes :

  • Définition des gestionnaires d’événements à l’aide de l’interface utilisateur : le contexte d’exécution est un paramètre facultatif qui peut être transmis à une fonction de bibliothèque JavaScript via un gestionnaire d’événements. Utilisez l’option Transmettre le contexte d’exécution comme premier paramètre dans la boîte de dialogue Propriétés du gestionnaire lorsque vous spécifiez le nom de la fonction pour transmettre le contexte d’exécution des événements. Le contexte d’exécution est le premier paramètre transmis à une fonction.


  • Définition des gestionnaires d’événements à l’aide d’un code : le contexte d’exécution est automatiquement transmis en tant que premier paramètre aux fonctions définies à l’aide d’un code. Pour obtenir la liste des méthodes permettant de définir des gestionnaires d’événements dans le code, voir Ajouter ou supprimer des fonctions des événements à l’aide du code.

L’objet de contexte d’exécution fournit de nombreuses méthodes pour travailler davantage avec le contexte. Pour plus d’informations : Contexte d’exécution (référence de l’API client)

Utilisation des objets de contexte de manière asynchrone

Le contexte transmis à un événement n’est garanti de fonctionner comme prévu que pendant l’événement. Lorsque vous conservez une référence à un contexte après la fin de l’événement, des actions peuvent se produire et entraîner un comportement inattendu des méthodes de contexte.

Par exemple, si votre gestionnaire d’événements distribue une action asynchrone qui prend un temps prolongé pendant que vous conservez une référence au contexte d’exécution, l’utilisateur final peut quitter la page actuelle au moment où la promesse se résout et que vous appelez la méthode de contexte. Cette situation peut entraîner le renvoi de méthodes telles que formContext.getAttribute(<name>).getValue() null, même si au moment de l’exécution du gestionnaire d’événements d’origine, l’attribut avait une valeur.

Les exemples suivants montrent où vous devez ajouter davantage de vérifications et faire preuve de prudence, car la fonction de gestionnaire d’événements utilise le contexte d’exécution une fois l’événement terminé.

Accéder au contexte d’une promesse

Le contexte peut changer de manière inattendue après la résolution d’une promesse. ...

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);
        }
    );
}

Accéder au contexte après une instruction d’attente

Le contexte peut changer de manière inattendue après l’utilisation de await dans une fonction asynchrone.

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);
}

Accéder au contexte dans une fonction de temporisation

Le contexte peut changer de manière inattendue après l’utilisation de setTimeout ou setInterval pour différer l’exécution de certains codes.

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");
    }
}

Contexte de formulaire de l’API client
Contexte de grille de l’API client
Contexte de formulaire et de grille dans les actions du ruban

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).