Javascript non è Asincrono.
Funziona in modo sincrono, ovvero esegue una riga di codice alla volta. Quando viene eseguito il codice javascript, viene creato innanzitutto un contesto di esecuzione globale e se si chiama una funzione dal contesto di esecuzione globale, viene creato un altro contesto di esecuzione dal motore javascript e posizionato nella parte superiore dello stack di esecuzione (esecuzione globale contesto è già nello stack) e se c'è un'altra funzione chiamata da quella funzione, viene creato un altro contesto di esecuzione e la dimensione dello stack continua ad aumentare.
Quindi, javascript motore continua a funzionare questo codice una riga alla volta e in questo processo, se c'è qualunque richiesta incendi evento/HTTP, il browser li mette in coda EVENTO. Quindi, il punto è che il motore javascript non elaborerà gli eventi in coda finché lo stack di esecuzione non sarà vuoto. E quando il motore ha finito con lo stack di esecuzione, cerca periodicamente se c'è un gestore di eventi per l'evento corrente in coda e crea in modo simile il contesto di esecuzione per quel gestore e lo esegue all'interno. Quindi, l'intero processo è solo sincrono e l'asincrona viene gestita dalle altre parti del browser come (motore di rendering o motore http) mentre il motore javascript continua a eseguire il codice in modo sincrono.
Quindi, nel tuo caso, da qualsiasi contesto funzione loadpage è stato invocato, il suo contesto di esecuzione è stato creato e e posto in cima alla pila. Quindi, richiama la funzione takeinput, il suo exec. il contesto viene creato e il contesto di altre funzioni non verrà creato e inserito nello stack finché il contesto takeinput non viene estratto dallo stack di esecuzione. Quindi, l'ordine corretto sarà takeinput, processinput e outputinput.
Spero che risponda alla tua domanda.
fonte
2015-10-20 19:43:42
L'unico 3? Che dire, bene, tutti gli altri? – Pointy
Quali altri? Non ce ne sono altri. Assegnare un onclick o onreadystatechange (per esempio) è solo una bastardizzazione di 'addEventListener'. – Halcyon
Che mi dici di XHR? Che dire di tutte le API disponibili in Node.js? – Pointy