/ / JavaScript javascript: come vengono implementati gli eventi? - javascript-events, gestione degli eventi, v8, spidermonkey, javascript-engine

JavaScript internals: come vengono implementati gli eventi? - javascript-events, gestione degli eventi, v8, spidermonkey, javascript-engine

La mia domanda è legata al modo in cui i motori JS implementano il pattern degli eventi asincroni quando facciamo qualcosa come i gestori di eventi di bind su una dom, diciamo un evento click.

Hanno qualcosa come un thread separato che sta ascoltando tutti gli eventi click? Quando si verifica un evento, fanno riferimento alla lista di binding e bolla gli eventi?

Simile è con Ajax, la rete asincronacall, dove il browser si estende su un nuovo thread che inizierebbe ad ascoltare i dati dal server e quando la risposta è ricevuta, chiamerebbe il gestore di successo?

risposte:

7 per risposta № 1

Leggere questo post sulla coda degli eventi javascript e vedere se è cosìrisponde la maggior parte della tua domanda. Ci sarà un thread OS nativo che gestisce l'interfaccia con gli eventi del sistema operativo reale (eventi del mouse, eventi della tastiera, eventi del timer, eventi I / O della rete, ecc ...) e questi vengono quindi inseriti nella coda JS dove il motore JS può spedirli al codice Javascript. Quanti thread separati ci sono a livello di sistema operativo è specifico per l'implementazione e probabilmente varia a seconda dell'implementazione.