Áú»¢¶Ä²©

4 Preprocesamiento con JavaScript

Descripci¨®n general

Esta secci¨®n proporciona detalles del preprocesamiento mediante JavaScript.

Preprocesamiento de JavaScript

El preprocesamiento de JavaScript se realiza invocando la funci¨®n de JavaScript con un 'valor' de par¨¢metro ¨²nico y cuerpo de funci¨®n proporcionado por el usuario. El resultado del paso de preprocesamiento es el valor devuelto por esta funci¨®n. Por ejemplo, para realizar la conversi¨®n de Fahrenheit a Celsius, el usuario debe ingresar:

return (value - 32)* 5 / 9

en los par¨¢metros de preprocesamiento de JavaScript, que se incluir¨¢n en una funci¨®n JavaScript por el servidor:

function (value)
       {
          return (value - 32) * 5 / 9
       }

El par¨¢metro de entrada 'value' siempre se pasa como una cadena. El valor de retorno se convierte autom¨¢ticamente en cadena mediante el m¨¦todo ToString() (si falla, el error se devuelve como valor de cadena), con algunas excepciones:

  • devolver un valor indefinido resultar¨¢ en un error
  • devolver un valor nulo har¨¢ que se descarte el valor de entrada, muy parecido al preprocesamiento 'Descartar valor' en la acci¨®n 'Personalizado en caso de error'.

Los errores se pueden devolver arrojando valores/objetos (normalmente ya sea cadenas u objetos de error).

Por ejemplo:

if (value == 0)
           throw "Zero input value"
       return 1/value

Cada script tiene un tiempo de espera de ejecuci¨®n de 10 segundos (dependiendo del script el tiempo de espera puede tardar m¨¢s en activarse); si se supera, se producir¨¢ un error de retorno. Se aplica un l¨ªmite de almacenamiento din¨¢mico de 512 megabytes (64 megabytes antes de Áú»¢¶Ä²© 6.0.19).

El c¨®digo de bytes del paso de preprocesamiento de JavaScript se almacena en cach¨¦ y se reutiliza cuando el paso se aplica la pr¨®xima vez. Cualquier cambio en los pasos de preprocesamiento de la m¨¦trica har¨¢ que el script almacenado en cach¨¦ se restablezca y se vuelva a compilar m¨¢s tarde.

Fallos consecutivos en el tiempo de ejecuci¨®n (3 seguidos) causar¨¢n que el motor se apague, reiniciadose para mitigar la posibilidad de que un script rompa el entorno de ejecuci¨®n para los siguientes scripts (esta acci¨®n se registra con un nivel de depuraci¨®n 4 y superior).

El preprocesamiento de JavaScript se implementa con Duktape () Motor JavaScript.

Ver tambi¨¦n: Objetos JavaScript adicionales y funciones globales

Uso de macros en scripts

Es posible utilizar macros de usuario en el c¨®digo JavaScript. Si un gui¨®n contiene macros de usuario, estas macros son resueltas por el servidor/proxy antes de ejecutar los pasos de preprocesamiento espec¨ªficos. Tenga en cuenta que al realizar pruebas de pasos de preprocesamiento en la interfaz, los valores macro no se extraer¨¢n y deben ingresarse manualmente.

El contexto se ignora cuando una macro se reemplaza con su valor. El valor de la macro se inserta en el c¨®digo tal cual, no es posible agregar escapes adicionales antes de colocar el valor en el c¨®digo JavaScript. Tenga en cuenta que esto puede provocar errores de JavaScript en algunos casos.

En el siguiente ejemplo, si el valor recibido excede el valor de una macro {$THRESHOLD}, en su lugar se devolver¨¢ el valor del umbral (si est¨¢ presente):

var threshold = '{$THRESHOLD}';
       return (!isNaN(threshold) && value > threshold) ? threshold : value;