Date un'occhiata a questo esempio:La coda eventi Javascript è un semplice FIFO o no?
function A() { console.log('A'); }
function B() { console.log('B'); }
// and then i setTimeout(fn, 0) both of them
setTimeout(A, 0);
setTimeout(B, 0);
E 'guarantied che B
immediatamente correre dietro A
?
È possibile che il browser aggiunga un'altra attività in coda tra A
e B
?
nota: nessuna delle funzioni A
o B
aggiunge nuove attività al ciclo degli eventi.
var callbacks = [];
// then add a bunch of callbacks ... (none adds events to event queue)
//case 1:
callbacks.forEach(cb => setTimeout(cb,0))
//case 2:
setTimeout(function() {
callbacks.forEach(cb => cb());
},0);
ci sono delle differenze nel l'ordine di esecuzione di callback in case 1
vs case 2
?
Risposta semplice: no, non c'è alcuna garanzia. Perché questa coda è utilizzata da molte altre cose oltre al motore JS. –
viene utilizzato contemporaneamente? ed è possibile che un evento da "DOM" venga posto in coda mentre una parte di js è in esecuzione? (non è js single thread? e gli script js long running fermano il freeze del browser?) –