本篇文章给大家带来的内容是关于js执行机制的概念?js的执行机制的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
在实际开发中,总是遇到请求结束后,想要把请求得到数据赋值给某一个对象或者变量,如果没有在请求的回调函数中赋值,而是在请求语句下面赋值,我们会发现请求得到数据正常,但是赋值后的变量是undefined。这是为什么呢?
首先,我们要了解一个概念,就是同步与异步。众所周知,js是单线程语言,也就是说,js一次只能执行一个任务,如果有多个任务的话呢,那就按照任务的顺序依次执行。但是如果其中某一个任务耗费大量时间,比如陷入死循环,那么其他任务都不能执行,会造成浏览器无响应。那么js是如何解决的呢?那就是将任务分为同步和异步模式进行执行。同步如上,异步呢是指,拥有大于一个的回调函数,任务在执行结束时不是执行下一个任务而是执行回调函数,那么有人可能会有疑问,这样做与同步有什么区别呢?区别在于,后一个任务不用等前一个任务完全执行后再去执行。因此我们得到的程序执行顺序不是任务的排列顺序。
setTimeout(function(){ console.log('第一个延时调用'); }); console.log('哈哈哈'); new Promise(function(resolve){ console.log('promise任务吗'); resolve(); }).then(function(){ console.log('回调函数???') }); console.log('嘻嘻嘻'); setTimeout(function(){ console.log('第二个延时调用'); });
执行结果是什么呢?
哈哈哈
promise任务吗
嘻嘻嘻
回调函数???
第一个延时调用
第二个延时调用
为什么是这样呢?为什么setTimeout会在最后才执行,明明是0ms啊。
是因为除了同步异步模式外,我们对任务还有进一步的划分,宏任务和微任务。
宏任务:包括整体代码script,setTimeout,setInterval
微任务:Promise,process.nextTick
在执行时,进入宏任务后,开始第一次循环,接着执行所有微任务,然后在进行宏任务的下次循环。
在上面代码中,进入宏任务,并将setTimeout注册为宏任务放入队列,接着执行哈哈哈,遇到new Promise 直接执行,回调函数放置微任务队列,接着执行嘻嘻嘻,第二个setTimeout如上。接着执行微任务,这里仅有嘻嘻嘻。最后进入下次宏任务。
相关推荐:
Atas ialah kandungan terperinci js执行机制的概念?js的执行机制的实现方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Memilih Python atau JavaScript harus berdasarkan perkembangan kerjaya, keluk pembelajaran dan ekosistem: 1) Pembangunan Kerjaya: Python sesuai untuk sains data dan pembangunan back-end, sementara JavaScript sesuai untuk pembangunan depan dan penuh. 2) Kurva Pembelajaran: Sintaks Python adalah ringkas dan sesuai untuk pemula; Sintaks JavaScript adalah fleksibel. 3) Ekosistem: Python mempunyai perpustakaan pengkomputeran saintifik yang kaya, dan JavaScript mempunyai rangka kerja front-end yang kuat.

Kuasa rangka kerja JavaScript terletak pada pembangunan yang memudahkan, meningkatkan pengalaman pengguna dan prestasi aplikasi. Apabila memilih rangka kerja, pertimbangkan: 1.

Pengenalan Saya tahu anda mungkin merasa pelik, apa sebenarnya yang perlu dilakukan oleh JavaScript, C dan penyemak imbas? Mereka seolah -olah tidak berkaitan, tetapi sebenarnya, mereka memainkan peranan yang sangat penting dalam pembangunan web moden. Hari ini kita akan membincangkan hubungan rapat antara ketiga -tiga ini. Melalui artikel ini, anda akan mempelajari bagaimana JavaScript berjalan dalam penyemak imbas, peranan C dalam enjin pelayar, dan bagaimana mereka bekerjasama untuk memacu rendering dan interaksi laman web. Kita semua tahu hubungan antara JavaScript dan penyemak imbas. JavaScript adalah bahasa utama pembangunan front-end. Ia berjalan secara langsung di penyemak imbas, menjadikan laman web jelas dan menarik. Adakah anda pernah tertanya -tanya mengapa Javascr

Node.js cemerlang pada I/O yang cekap, sebahagian besarnya terima kasih kepada aliran. Aliran memproses data secara berperingkat, mengelakkan beban memori-ideal untuk fail besar, tugas rangkaian, dan aplikasi masa nyata. Menggabungkan sungai dengan keselamatan jenis typescript mencipta powe

Perbezaan prestasi dan kecekapan antara Python dan JavaScript terutamanya dicerminkan dalam: 1) sebagai bahasa yang ditafsirkan, Python berjalan perlahan tetapi mempunyai kecekapan pembangunan yang tinggi dan sesuai untuk pembangunan prototaip pesat; 2) JavaScript adalah terhad kepada benang tunggal dalam penyemak imbas, tetapi I/O multi-threading dan asynchronous boleh digunakan untuk meningkatkan prestasi dalam node.js, dan kedua-duanya mempunyai kelebihan dalam projek sebenar.

JavaScript berasal pada tahun 1995 dan dicipta oleh Brandon Ike, dan menyedari bahasa itu menjadi C. 1.C Language menyediakan keupayaan pengaturcaraan prestasi tinggi dan sistem untuk JavaScript. 2. Pengurusan memori JavaScript dan pengoptimuman prestasi bergantung pada bahasa C. 3. Ciri lintas platform bahasa C membantu JavaScript berjalan dengan cekap pada sistem operasi yang berbeza.

JavaScript berjalan dalam penyemak imbas dan persekitaran Node.js dan bergantung pada enjin JavaScript untuk menghuraikan dan melaksanakan kod. 1) menjana pokok sintaks abstrak (AST) di peringkat parsing; 2) menukar AST ke bytecode atau kod mesin dalam peringkat penyusunan; 3) Laksanakan kod yang disusun dalam peringkat pelaksanaan.

Trend masa depan Python dan JavaScript termasuk: 1. Kedua -duanya akan terus mengembangkan senario aplikasi dalam bidang masing -masing dan membuat lebih banyak penemuan dalam prestasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
