Mashup Builder > Funzioni > Best practice per la creazione di espressioni di funzione
Best practice per la creazione di espressioni di funzione
Le funzioni e i widget seguenti supportano la scrittura di espressioni JavaScript personalizzate in un mashup:
Funzione di espressione - Restituisce un valore
Funzione di convalida - Restituisce un valore booleano
Widget Griglia - Restituiscono l'input dell'utente durante la modifica delle celle della griglia
Utilizzare la funzione TW.log solo a scopo di sviluppo
È possibile utilizzare la funzione TW.log() per registrare i messaggi di debug, errore, avvertenza e informazioni correlati all'espressione in un mashup. I messaggi del log vengono visualizzati nella finestra di dialogo dei log del mashup in fase di esecuzione. Ad esempio:
TW.log.debug('debug')
TW.log.error('error')
TW.log.warn('warn')
TW.log.info('info')
L'apertura di mashup contenenti un numero elevato di istruzioni di log di espressioni influisce in modo significativo sulle prestazioni del mashup. È consigliabile evitare di utilizzare un numero elevato di istruzioni di log nei mashup quando si lavora in un ambiente di produzione live. È possibile utilizzare le istruzioni di log durante lo sviluppo e il test di un mashup, ma è necessario convertirle in commento o rimuoverle dal codice prima di distribuire il mashup in un ambiente di produzione.
Controllare la console di debug in fase di esecuzione
Dopo aver progettato un mashup contenente espressioni, controllare la finestra di dialogo delle informazioni sul debug in fase di esecuzione. È possibile utilizzare questa funzionalità per il tracciamento dell'esecuzione del mashup, che permette di identificare i problemi di logica, ad esempio associazioni circolari e loop infiniti nel progetto o nell'implementazione. Per visualizzare le informazioni di debug per un mashup, fare clic su Mostra/Nascondi info debug sulla barra degli strumenti della fase di esecuzione.
Analisi dell'input JSON
Quando si utilizzano i dati JSON in un'espressione, evitare di utilizzare il metodo JSON.parse() per analizzare e convertire JSON da una stringa. È possibile accedere agli oggetti JSON all'interno di parametri impostati direttamente su un tipo di base JSON.
Utilizzo della funzione TW.setTimout
Nelle versioni precedenti di ThingWorx, il metodo setTimeout non è supportato nelle espressioni di funzione. In ThingWorx 9.6 o versioni successive possibile eseguire simultaneamente fino a 10 espressioni contenenti una funzione TW.setTimeout. In ogni funzione di espressione è possibile definire una singola funzione setTimeout. Qualsiasi codice aggiunto prima o dopo la funzione setTimeout nell'espressione non viene eseguito. Il valore massimo di timeout che è possibile impostare per una funzione è limitato a 10 secondi. Quando si definisce un valore superiore a questo limite, il valore della funzione viene impostato automaticamente su 10 secondi e viene visualizzato un messaggio TW.log.warn nei log del mashup in fase di esecuzione.
TW.setTimeout(() => {
TW.log.info("Delayed for 1 second.")
}, "1000");
* 
Sono disponibili fino a dieci web worker per l'esecuzione delle espressioni con una funzione setTimeout in fase di esecuzione. Le espressioni aggiuntive vengono messe in coda in attesa che un worker diventi disponibile.
Utilizzo delle funzioni TW.sessionStorage
Le coppie nome/valore memorizzate nell'oggetto window.sessionStorage sono disponibili solo per la durata della sessione del browser. Potrebbero verificarsi situazioni di race condition perché le espressioni protette vengono eseguite in modo asincrono. Ad esempio, un'espressione potrebbe aggiornare le proprietà dell'archivio di sessione, mentre un'altra potrebbe essere eseguita prima che siano disponibili i valori aggiornati. Per ridurre le race condition e assicurarsi che gli aggiornamenti dell'archivio di sessione siano disponibili quando inizia l'esecuzione di un'altra espressione, è necessario concatenare le espressioni utilizzando un evento Changed.
* 
Le variabili window.sessionStorage non sono correlate alle GlobalSessionVariables di ThingWorx.
È stato utile?