Cum JavaScript știu că o metodă este asincron?

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.

Comentarii la întrebare (7)
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.

Comentarii (0)

Î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.

Comentarii (12)