Sto cercando di comprendere le funzioni asincrone Javascript e le richiamate.È Javascript sincrono (bloccante) o Asincrono (non bloccante) per impostazione predefinita
Mi sono bloccato sul concetto di funzioni di callback, dove sto leggendo in alcuni punti: sono utilizzate per eseguire sequenzialmente il codice (principalmente nel contesto di jquery e.g animate) e in alcuni luoghi specialmente nel contesto di Nodejs; sono utilizzati per avere un'esecuzione parallela asincrona ed evitare il blocco del codice.
Quindi qualche esperto in questo argomento può fare chiarezza su questo e chiarire questo fuzz nella mia mente (esempi ??). così ho potuto fare la mia mente per l'uso della funzione di callback
o che è solo dipende dal luogo di dove si sta chiamando/mettendo una funzione di callback nel codice? .
Grazie,
PS: ho paura che la questione sarebbe vicino soggettiva, ma comunque ho potuto aspettare risposta concreta per questo (forse alcuni esempi)
Edit: In realtà questo è il esempio da internet che mi rende ambiguo:
function do_a(){
// simulate a time consuming function
setTimeout(function(){
console.log('`do_a`: this takes longer than `do_b`');
}, 1000);
}
function do_b(){
console.log('`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`');
}
do_a();
do_b();
Risultato
`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`
`do_a`: this takes longer than `do_b`
quando JS è sequenziale quindi do_b deve sempre venire dopo do_a secondo la mia comprensione.
JavaScript è JavaScript; dipende dal contesto, dall'utilizzo, dal motore, ecc. –
Puoi fornire qualche codice di esempio che non sei sicuro se blocca o non blocca? – Matt
JavaScript è in generale sincrono, ma setTimeout è asincrono per definizione. Ecco un buon primer su di esso: https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout –