JavaScript实现异步编程的方法有:易于理解和实现但是代码不好维护的回调方法,发布/订阅方法,易于理解并且可绑定多个事件但是工作流程混乱的事件监听方法,Promises方法
异步模式是非常重要,在浏览器端长时间运行的操作应该异步执行,以避免不响应。接下来将在文章中为大家详细介绍JavaScript中异步编程方法的实现,具有一定参考作用,希望对大家有所帮助。
【推荐课程:JavaScript教程】
大家都知道JavaScript的执行环境是单线程的,单线程就意味着在任何时候都只能运行一个任务。如果遇到多任务的时候就需要在队列中等待上一任务的完成。因此耗费时间比较多,同步模式就类似于这种单线程模式,异步模式是完全不同的,每一个任务都有一个回调函数,当一个任务完成后,它将执行回调函数,后面的任务可以与前一个任务同时运行。任务的执行顺序与队列中的任务序列不同。
方法一:回调方法
这个方法是异步编程的基本方法,假设有两个函数f1和f2,后者将等待第一个函数的结果。
F1(); F2();
如果f1是长时间运行的操作,则可以重写f1并将f2作为f1的回调函数。
function f1(callback){ setTimeout(function () { callback(); }, 1000); }
使用此模式,同步操作就可以转换为异步操作,f1不会阻止程序执行,它会将先执行主逻辑然后再执行耗时的操作
回调函数的优点是易于理解和实现,缺点是代码不可读和可维护,不同的组件高度耦合,工作流非常混乱,每个任务只能有一个回调函数。
方法二:发布/订阅
此事件可以理解为信号,假设存在信号中心,如果一个任务完成,它将向信号中心发布信号,其他任务可以从订阅信号中心接收指定信号。这种方法就称为发布/订阅模式或者是观察者模式。
例:f2向信号中心订阅完成信号
jQuery.subscribe(“done”,f2);
然后写f1为
function f1(){ setTimeout(function () { jQuery.publish("done"); }, 1000); }
jQuery.publish(“done”)
表示当f1完成执行时它将向信号中心发送一个完成信号,然后f2将开始执行。
当f2完成执行时,它可以取消订阅。
jQuery.unsubscribe(“done”,f2);
方法三:事件监听
另一种方法是事件驱动模式,一个任务的执行不依赖于代码顺序,它们等待一个事件发生。在本例中仍然使用f1和f2,首先将一个事件绑定到f1。
f1.on('done',f2);
上述代码的含义是如果f1完成事件发生,则执行f2。
function f1(){ setTimeout(function () { f1.trigger('done'); }, 1000); }
f1.trigger('done')
表示它将触发done事件,然后在执行完成时执行f2。
优点是它易于理解并且可以绑定多个事件,每个事件都可以具有许多回调函数,并且它可以解耦哪个有利于模块化。缺点是整个程序将被事件驱动,工作流程不是很清楚。
方法四:Promises方法
Promises对象是CommonJS提出的标准,目的是为异步编程提供通用接口。每个异步任务都会返回一个Promises对象,这个对象有一个允许设置回调函数的then方法。例如,f1的回调函数f2:
F1().then(F2)
f1应写成:
function f1(){ var dfd = $.Deferred(); setTimeout(function () { dfd.resolve(); }, 500); return dfd.promise; }
优点是回调函数是链接的,程序的工作流程非常清晰,它有一套完整的链接方法,可用于实现强大的功能。
例如,设置多个回调函数:
f1().then(f2).then(f3);
还有一个例子,如果有错误:
f1().then(f2).fail(f3);
其他三种方法不具备的一个优点是一旦完成一个任务,如果添加更多的回调函数,它们将立即执行。缺点是它不容易理解。
总结:以上就是本篇文章的全部内容了,希望对大家有所帮助。
Atas ialah kandungan terperinci javascript异步编程方法有哪些. 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 Cina
Versi Cina, sangat mudah digunakan

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

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