Una cosa è UN FATTO: dal 2010 JavaScript non ha un thread che ferma la funzione "sleep" (diversa da quella che brucia solo i cicli della CPU).
Ho lavorato con JavaScript per almeno un anno prima di postare questo commento e sono giunto alla conclusione che la mancanza di una funzione di interruzione del thread è un vero ostacolo allo show per il threading del codice correlato.
Una conseguenza della mancanza della funzione sleep è che non è possibile simulare un Ruby/C#/C++/etc. come il modello di threading in JavaScript, che a sua volta significa che non è possibile tradurre nessuno dei linguaggi abilitati per il threading in JavaScript, non importa, a meno che il codice JavaScript non sia integrato con un (preferibilmente senza ciclo di CPU). funzione.
Se si naviga, si possono trovare molti commenti che affermano che la funzione sleep non è nemmeno necessaria, che setTimeout è sufficiente, ecc., Ma suppongo che le persone, che lo dichiarano, non abbiano provato a implementare una struttura di threading in JavaScript. (Pensa ai mutex, sezioni critiche.) Mi rifiuto di entrare in una discussione che le sezioni/sincronizzazione critiche non sono/non sono necessarie per i casi, dove il contenuto del widget è costituito da più componenti di dati che formano un "intero atomico".)
Il secondo show-stopper per l'intero modello DOM è l'implementazione che rende gli elementi DOM nel FILO DI SFONDO.
Ecco, che cosa accade:
in JavaScript: create_my_awsome_widget_in_DOM(); edit_my_awsome_widget_by_editing_DOM_inside_it() if_we_are_lucky_we_reach_here_without_crashing_the_app()
Come il DOM è reso in background (leggi: in un thread separato), ci sarà una condizione di competizione tra il filo che ha avviato la modifica DOM, effettuando una chiamata al create_my_awsome_widget_in_DOM() e il rendering DOM. Se il thread di rendering è "abbastanza veloce" per rendere il DOM prima del thread JavasSript chiama edit_my_awsome_widget_by_editing_DOM_inside_it(), tutto funziona correttamente, ma se è il contrario, allora JavaScript inizia a modificare la regione del DOM che non lo fa (ancora) esiste.
Essenzialmente significa che a causa della bassa DOM rendendo la create_my_awsome_widget_in_DOM() e edit_my_awsome_widget_by_editing_DOM_inside_it() vengono eseguiti in un ordine casuale e ovviamente l'applicazione si blocca, se l'edit_my_awsome_widget_by_editing_DOM_inside_it() viene chiamato prima del create_my_awsome_widget_in_DOM().
I plug-in possono introdurre immense falle di sicurezza e problemi di prestazioni. Prendiamo ad esempio il plug-in Flash, che richiede troppo processore per funzionare correttamente sui telefoni cellulari e ha una patch a intervalli regolari per chiudere una pericolosa perdita di sicurezza. JavaScript È la lingua del browser, semmai, cerca un compilatore da Ruby a JavaScript. – BGerrissen