E 'necessario' sincrono in AMD (definizione del modulo asincrono)? In tal caso, cosa rende questa specifica asincrona? Cosa succede se ho richiesto() (e non è stato ancora caricato) nel mezzo del mio codice, interromperà l'esecuzione? Parlando dal lato del browser.Javascript: E 'necessario' il metodo sincrono in AMD (definizione del modulo asincrono)?
risposta
Per requireJS:
Devi passare un metodo di callback accanto ai moduli richiesti per .require()
, che andranno sparati quando le risorse sono stati caricati con successo. Quindi, ovviamente, è possibile/solo accedere ai moduli AMD o CommonJS caricati solo all'interno di tale callback.
per NodeJS:
Sì, .require()
funziona in modo sincrono. NodeJS utilizza il sistema del modulo CommonJS, non AMD.
Qui ci sono due diversi concetti synchronous
. Il primo è "interromperà la mia intera pagina web e mi siederò ad aspettare il file".
La risposta è no. RequireJS non lo fa se hai uno script con dipendenze.
Se lo si utilizza in modo appropriato, utilizza un sistema di promessa. Ciò significa che se si invia la richiamata e si definiscono i requisiti per quel file, la richiamata non verrà eseguita fino a quando non verranno caricati tutti i file richiesti.
Se è richiesto uno di questi file richiesti, la chiamata CHE non verrà eseguita fino a quando le dipendenze ITS non saranno caricate.
Il callback più esterno (quello che si troverà nella parte inferiore dello script, normalmente), non verrà eseguito fino a quando tutto ciò che è dentro non lo è.
Questo funziona su un sistema di promessa. Vale la pena capire come funzionano i sistemi di promessa (in un modo simile a un modello di osservatore). Sono pensati per essere passati in giro o incatenati, in base a un evento, piuttosto che avere più persone che ascoltano in qualsiasi ordine.
var widget = new Widget(),
widgetLoaded = widget.load(url); // return a promise to let the program use the widget
widgetLoaded.then(function() { widget.move(35); })
.then(function() { widget.setColour("Blue"); })
.then(function() { widget.show(); });
Questo è come tornare this
in modo da poter chiamate di funzione a catena, salvo che le chiamate in realtà non accadere fino widget.load()
è completa.
Il widget
controlla effettivamente quando ciò accade, mantenendo la sua promessa se il widget viene caricato e tutto è a posto, o rompendo la sua promessa se qualcosa è andato storto.
Nella maggior parte dei sistemi promessa, .then
o come diavolo si chiamano, o prende due funzioni (curati e rotti - nei miei sistemi, brokens sono sempre opzionali), oppure prendere un oggetto con success
e failure
-$.ajax
fa questo , e quindi ti consente di predeterminare cosa vuoi fare con i dati quando è caricato, o se fallisce - promette.
Così la tua pagina funziona ancora al 100% in modo asincrono (senza interrompere l'interfaccia utente), ma è sincronizzata al 100% in quanto tutti i moduli verranno attivati nell'ordine corretto.
Una cosa che si deve ricordare : Se si dispone di queste dipendenze nel codice, non si può avere dipendenze giro sul fondo dello script, in attesa di esecuzione, in linea. Devono essere tutti bloccati all'interno della richiamata o bloccati all'interno di una funzione in attesa di essere richiamati dalla richiamata.
Questo è semplicemente perché è un processo asincrono, in termini di elaborazione effettiva, e non bloccherà il browser da eventi di corsa/JS, il rendering della pagina, eccetera.
- 1. Il modulo è inviato in sincrono o asincrono?
- 2. supporta sia CommonJS e AMD
- 3. Script del pulsante Twitter caricato in modo sincrono, è necessario caricarlo in modo asincrono
- 4. Postback asincrono e sincrono in ASP.NET
- 5. Ottieni il risultato del metodo asincrono
- 6. Asincrono sincrono su iPhone
- 7. Accesso al database sincrono o asincrono
- 8. Il trigger di Backbone() sincrono o asincrono?
- 9. È curl_easy_perform() sincrono o asincrono?
- 10. Thrust è sincrono o asincrono?
- 11. Dispatch_apply è sincrono o asincrono?
- 12. Determinare se un metodo è sincrono o asincrono
- 13. Comportamento sincrono in javascript?
- 14. Versione di sincronizzazione del metodo asincrono
- 15. Come si può estendere un modulo Javascript definito con AMD?
- 16. Un'attesa rende il resto del metodo asincrono?
- 17. Come implementare i timeout del metodo sincrono in Java?
- 18. Chiamata al metodo asincrono e impersonificazione
- 19. usando setTimeout sincrono in JavaScript
- 20. Chiamare il metodo asincrono dal controller MVC
- 21. Implementazione di AMD in JavaScript utilizzando RequireJS
- 22. Importare il modulo AMD esistente nel modulo ES6
- 23. Come si scrive un metodo sincrono di blocco in Javascript?
- 24. Come avvolgere un metodo asincrono che prende un blocco e ruotarla sincrono c obiettivo
- 25. Qual è la differenza tra apis sincrono e apis asincrono?
- 26. È map() in javascript sincrono?
- 27. Caricamento immagini in modo sincrono con javascript
- 28. Comprende automaticamente i deps AMD nel modulo AMD Typescript?
- 29. E 'necessario chiudere il flusso del metodo di WebInvoke
- 30. JavaScript: Adattare il codice sincrono per essere asincrono, per supportare IE8?