Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El contexto de ejecución define el contexto de evento en el que se ejecuta el código. El sistema pasa el contexto de ejecución cuando se produce un evento en un formulario o cuadrícula. Úselo en el controlador de eventos para realizar diversas tareas, como determinar formContext o gridContext, o administrar el evento de guardado.
Puede pasar el contexto de ejecución de las maneras siguientes:
Definir controladores de eventos mediante la interfaz de usuario: el contexto de ejecución es un parámetro opcional que se puede pasar a una función de biblioteca de JavaScript a través de un controlador de eventos. Use la opción Pasar contexto de ejecución como primer parámetro en el cuadro de diálogo Propiedades del controlador al especificar el nombre de la función para pasar el contexto de ejecución del evento. El contexto de ejecución es el primer parámetro que se pasa a una función.
- Definir controladores de eventos mediante código: el sistema pasa automáticamente el contexto de ejecución como primer parámetro a las funciones establecidas mediante código. Para obtener una lista de los métodos que puede usar para definir controladores de eventos en el código, consulte Adición o eliminación de funciones a eventos mediante código.
El objeto de contexto de ejecución proporciona métodos para trabajar con el contexto. Para obtener más información, consulte Referencia de métodos de contexto de ejecución de api de cliente.
Uso de objetos de contexto de forma asincrónica
El contexto que el sistema pasa a un evento solo se garantiza que funcione según lo previsto durante el evento. Cuando mantiene una referencia a un contexto después de que finalice el evento, pueden producirse acciones que hagan que los métodos de contexto se comporten de manera inesperada.
Por ejemplo, si el controlador de eventos envía una acción asincrónica que tarda un período de tiempo prolongado y usted mantiene una referencia al contexto de ejecución, el usuario final podría abandonar la página actual antes de que la promesa se resuelva y usted invoque el método del contexto. Esta situación podría hacer que métodos similares a formContext.getAttribute(<name>).getValue() devuelvan null, aunque en el momento en que se ejecutó el controlador de eventos original, el atributo tenía un valor.
En los ejemplos siguientes se muestran dónde debe agregar más comprobaciones y tener cuidado, ya que la función de controlador de eventos usa el contexto de ejecución una vez que se completa el evento.
Acceso al contexto en una promesa
El contexto puede cambiar de maneras inesperadas después de que se resuelva una promesa .
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);
}
);
}
Acceso al contexto después de una instrucción await
El contexto puede cambiar de maneras inesperadas después de usar await dentro de una función asincrónica.
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);
}
Acceso al contexto en una función de tiempo de espera
El contexto puede cambiar de maneras inesperadas después de usar setTimeout o setInterval para aplazar la ejecución de algún código.
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");
}
}
Artículos relacionados
Contexto de formulario de la API del cliente
Contexto de cuadrícula de la API del cliente
Contexto de formulario y cuadrícula en las acciones de la cinta