Luând metoda setTimeout ca un exemplu, cum se știe că JavaScript care specifică metoda este asincron? Cum se știe că are de a împinge metoda în coadă de bucla eveniment ?
Poate cineva sa arunce putina lumina asupra asta ?
Multumesc.
var queue = [];
function add(callback) {
queue.push(callback);
}
Cum se știe că JavaScript trebuie să împingeți
callback
funcția la "coadă" matrice?
Nu't "stiu". Doar execută " add " funcția.
L's nu diferit pentru setTimeout` - cu excepția faptului că funcția nu este scris de programator JavaScript, dar expuse ca parte a API nativ construit în browser-ul. JavaScript nu stiu ce face, doar spune.
În primul rând, să înțeleagă că JavaScript rulează în propria execuție medii (un runtime). Care runtime este doar o aplicație care rulează în sistemul de operare gazdă și că sistemul de OPERARE este capabil de multi-threading (operații asincrone). JavaScript runtime poate fi de a face un lucru în timp ce sistemul de OPERARE face altceva.
JavaScript execuție a proceselor de tot codul synchrously. Acest lucru este de design și în scris în caietul de sarcini ECMAScript. Deci, nu este nimic care runtime are să-mi dau seama.
Majoritatea clientilor oferă Api-uri suplimentare (dincolo de ceea ce este în spec.) și aceste operațiuni sunt de multe ori face asincron, deoarece acestea nu sunt realizate de execuție - sunt realizate de către client. setTimeout() este un exemplu în acest sens. Nu face parte din JavaScript. E parte din browser-ul furnizat obiect fereastră și timer-ul este, de fapt, efectuate de către browser.