• IT
betterdocs-cat-icon 1-svg

Qualcosa è andato storto?

Condividi con noi la tua opinione per migliorare la nostra documentazione.

    Getting Started

    • Introduzione Instant Developer Cloud
    • Composizione della piattaforma
    • Struttura dei progetti
    • La programmazione relazionale
    • Apprendere l’uso di Instant Developer Cloud

    Struttura di un'applicazione

    • Introduzione (applicazione e sessione)
    • Le videate
    • Classi e librerie
    • Risorse e CSS
    • I pacchetti
    • Programmazione asincrona

    Struttura del database

    • Introduzione (struttura del database)
    • Definizione degli schemi relazionali
    • Scrittura di query ed esecuzione di comandi
    • Gestione dei database nel cloud
    • Il Cloud Connector

    Document Orientation

    • Introduzione Document Orientation
    • Definire Documenti e Collection
    • Utilizzo dei documenti
    • Estensione dei documenti

    Datamap

    • Introduzione Datamap
    • Creazione di liste di documenti
    • Modifica dei documenti con videate di dettaglio
    • Datamap innestate e ricorsive

    IonicUI

    • Introduzione IonicUi
    • Le pagine IonicUI
    • Definire il contenuto delle pagine
    • Il page controller
    • Il metodo app.popup
    • Videate come elementi visuali
    • Personalizzazione di IonicUI
    • Configurazione dei ruoli e degli accessi

    Pannelli e Griglie

    • Introduzione (Pannelli e Griglie)
    • Anatomia di un pannello
    • I pannelli a runtime

    Web API e file system

    • Introduzione Web API
    • Il file system
    • Consumare Web API
    • Esporre Web API
    • Web API in formato OData
    • Utilizzare Web API Instant Developer Foundation
    • Web API in formato OpenAPI

    Sincronizzazione

    • Introduzione sistema di sincronizzazione
    • Scambio di messaggi in tempo reale
    • Document Orientation Remota
    • Sincronizzazione del database offline

    Debugging e Test

    • Introduzione Debugging e Test
    • Strumenti e tecniche di debug
    • Test automatico delle applicazioni

    Traduzioni

    • Introduzione (traduzioni)
    • Processo di traduzione
    • Funzionamento del framework di localizzazione
    • Localizzazione di numeri e date

    Integrazioni di componenti esterni

    • Introduzione (integrazioni di componenti esterni)
    • Integrazione di componenti JavaScript
    • Integrazione di librerie di back-end
    • Integrazione di un plugin Cordova

    Launcher e Pubblicazione

    • Introduzione Launcher
    • I plugin nativi
    • Test delle applicazioni nei launcher
    • Pubblicazione sugli store
    • Configurazioni per gli store
    • Fase di build e di invio
    • Gestione dell’applicazione

    Analitiche e Feedback

    • Introduzione Analytics e Feedback
    • Installazione ed uso di Analytics
    • Raccolta dei feedback degli utenti

    Server di Produzione

    • Introduzione server di produzione
    • I server di Instant Developer Cloud
    • I server My Cloud
    • I server Self Managed
    • Tabella comparativa

    Cloud Connector

    • Cos’è il Cloud Connector
    • Installazione Cloud Connector
    • Configurazione
    • Installazione come servizio
    • Esempio di utilizzo
    • Controllo remoto
    • Note

    Team Works

    • Perché non basta GitHub?
    • Team Works: concetti base
    • Organizzazione del lavoro consigliata
    • Risoluzione dei problemi relativi a Team Works
    • Domande sull’utilizzo di Team Works

    Manuale PWA

    • Cos’è una PWA?
    • Creazione di una PWA su Instant Developer Cloud
    • Life Cycle
    • Installazione PWA
    • Funzionalità
    • Plugin
    View Categories

    Programmazione asincrona

    Concludiamo questo capitolo sulla struttura di un’applicazione Instant Developer Cloud descrivendo il modello di multitasking previsto per i vari tipi di container.

    Come previsto dall’architettura delle virtual machine JavaScript, sia i container basati su Node.js, sia quelli basati su browser o webview (Cordova) utilizzano il meccanismo delle closure e delle callback per la gestione delle operazioni asincrone e per il multitasking cooperativo.

    Questo significa che ogni operazione asincrona che coinvolge, ad esempio, query su database, lettura di dati dal file system o chiamate remote deve essere aspettata e gestita in un ramo di codice separato tramite una callback JavaScript.

    Per semplificare la scrittura del codice, in particolare quello in cui si hanno diverse operazioni asincrone in cascata, Instant Developer Cloud include fino dal 2015 la sequenzializzazione automatica delle operazioni asincrone tramite il costrutto yield.

    Ad esempio, se volessimo stampare nella console i numeri da 0 a 9 ad un intervallo di un secondo l’uno dall’altro, potremmo scrivere le seguenti righe di codice:

    for (let i = 0; i < 10; i++) {
      console.log(i);
      yield app.sleep(1000);
    }

    Il metodo app.sleep del framework sospende il thread di codice attivo per un determinato intervallo di tempo e poi lo riprende. L’inserimento automatico della parola chiave yield consente di aspettare il termine dell’operazione asincrona prima di riprendere l’esecuzione dello script attivo.

    Il risultato di questa sequenzializzazione è logicamente identico all’odierno costrutto await, con le seguenti differenze notevoli:

    1. L’IDE rileva automaticamente se una riga di codice chiama un metodo marcato come asincrono. In tal caso prima della chiamata viene automaticamente inserito il costrutto yield e il metodo corrente viene marcato come asincrono.
    2. Quando un metodo viene marcato come sincrono o asincrono (in funzione del fatto che al suo interno vengano sequenzializzate chiamate a metodi o meno), tutti i metodi che chiamano quello in fase di modifica vengono automaticamente modificati aggiungendo o togliendo il costrutto yield ove necessario.
    3. È possibile scegliere di non sequenzializzare una chiamata eliminando la parola chiave yield dopo che l’IDE l’ha inserita. In tal caso verrà aggiunta una callback per la gestione dei risultati della chiamata.
    4. Il codice dei metodi asincroni e le relative chiamate vengono generati in modo tale da gestire le chiamate asincrone. Non è necessario alcun intervento di modifica manuale.
    5. La gestione delle eccezioni relative ad una chiamata asincrona è identica a quella di un metodo sincrono. Non è necessaria alcuna modifica al codice applicativo.

    Si deve tenere presente che durante l’attesa del completamento di un metodo asincrono il sistema non è bloccato, quindi è possibile che avvengano azioni che possono avviare ulteriori processi di codice. Se, ad esempio, lo script di gestione del clic di un pulsante richiede 10 secondi, è possibile che l’utente clicchi più volte il pulsante prima del termine del processo, causando l’avvio di più istanze dello stesso processo di gestione. In questi casi si consiglia di disabilitare il comando fino al completamento del processo, oppure di applicare un elemento di attesa all’interfaccia dell’applicazione bloccando tutti gli input dell’utente.
    Notiamo infine che, nel caso di container per applicazioni web, nello stesso processo worker Node.js saranno gestite più sessioni, solitamente una quantità da 10 a 100. Se una di queste sessioni esegue un metodo sincrono molto impegnativo, tutte le sessioni dello stesso processo worker verranno rallentate. Non è mai consigliabile che uno script sincrono richieda più di 100 ms per essere eseguito. In questi casi è possibile isolare gli script sincroni lenti in un processo separato ad esempio utilizzando una sessione di tipo server, oppure suddividere il lavoro in più step sincroni separati da chiamate asincrone che permettono alle altre sessioni di continuare il proprio lavoro.

    Ti è stato utile?
    Aggiornato il 15 Aprile 2024
    I pacchetti

    Caratteristiche

    • Perché Instant Developer
    • IDE e Ambiente di Sviluppo
    • Pubblicazione Web & Mobile
    • Software Life Cycle & DevOps
    • Database, Integrazione, Sync
    • Collaboration & Workflow

    Soluzioni

    • Freelance
    • Software House
    • Company IT
    • Casi di successo
    • Applicazioni Sviluppate

    Azienda

    • Chi Siamo
    • Contatti
    • Lavora con noi

    Risorse

    • Documentazione
    • Risorse e Tutorial
    • Blog
    • Starter Kit
    • Pricing
    • Inizia Ora
    Crea un account e Inizia Gratis
    • Seguici su Twitter
    • Seguici su Facebook
    • Seguici su LinkedIn
    • Seguici su YoutTubeSeguici su YouTube
    Questo sito è protetto dalla tecnologia reCAPTCHA Enterprise e si applicano l'Informativa sulla privacy e i Termini di servizio di Google.
    Google Policy | Termini
    © Pro Gamma - p.iva, c.f. e iscr. Camera di Commercio Bologna 01985091204 - Sede legale Via D'Azeglio, 51 40123 Bologna - Italia Pro Gamma Instant Developer® è un marchio registrato.
    Privacy Policy | Cookie Policy
    • IT