


Amalan pengaturcaraan tak segerak when.js di bawah node.js_node.js
Anggap senario perniagaan:
Dapatkan rss melalui alamat rss dan simpan dalam fail, dan alamat rss disimpan dalam fail.
Untuk menyelesaikan perniagaan senario ini, anda perlu menyelesaikan 3 tugasan:
1. Baca alamat rss daripada fail.
2. Dapatkan rss.
3.
Akhir sekali integrasikan ketiga-tiga tugasan ini.
Penyediaan:
Fail yang menyimpan alamat rss, address.txt.
http://programmer.csdn.net/rss_programmer.html
Tugasan 1:
Baca kandungan fail alamat rss dan kembalikannya melalui panggilan balik.
var getRssAddress = fungsi(laluan, panggil balik) {
fs.readFile(path, {encoding: 'utf8'}, function (err, data) {
panggil balik(err, data);
});
}
Misi 2:
Dapatkan rss melalui alamat rss dan kembalikan ralat atau data melalui panggilan balik.
var getRss = function(url, panggil balik) {
var data = '';
http.get(url, function(res) {
res.on('data', function(crunk) {
data = chrunk;
});
res.on('end', function() {
panggilan balik(null, data);
});
}).on('error', function(err) {
panggil balik(err, null);
});
}
Misi 3:
Simpan RSS dalam fail dan kembalikan ralat melalui panggilan balik.
var saveRss = fungsi(data, panggil balik) {
fs.writeFile('rss.txt', data, 'utf8', function(err) {
panggil balik(err);
});
}
Integrasi:
getRssAddress('address.txt', fungsi(err, data) {
jika(err) {
console.log(err);
Kembali;
}
getRss(data, fungsi(err, data) {
Jika(err) {
console.log(err);
Kembali;
}
SaveRss(data, fungsi(err) {
If(err) console.log(err);
});
});
});
Kod di atas adalah pemprosesan tak segerak sepenuhnya, menggunakan panggilan balik yang paling biasa untuk mengendalikan pengembalian logik tak segerak Kelebihannya ialah kaedah penulisan standard yang boleh diterima dengan mudah oleh semua orang; pengendalian pengecualian adalah menyusahkan, dan kod itu tidak intuitif, terutamanya Apabila berurusan dengan logik perniagaan yang kompleks dan pelbagai tugas pemprosesan, lapisan panggilan balik boleh membuatkan mata orang terpesona, menjadikan kod sukar untuk dikekalkan.
when.js, salah satu pelaksanaan spesifikasi Promise/A, ditujukan kepada domain masalah ini.
Mari kita lihat kod yang diubah.
Misi 1:
var getRssAddress = fungsi(laluan) {
var tertunda = when.defer();
fs.readFile(path, {encoding: 'utf8'}, function (err, data) {
Jika (err) ditangguhkan.reject(err);
deferred.resolve(data);
});
pulangan tertunda.janji;
}
Misi 2:
var getRss = function(url) {
var tertunda = when.defer();
var data = '';
http.get(url, function(res) {
res.on('data', function(crunk) {
data = chrunk;
});
res.on('end', function() {
deferred.resolve(data);
});
}).on('error', function(err) {
deferred.reject(err);
});
pemulangan tertunda.janji;
}
任务3:
var saveRss = fungsi(data) {
var tertunda = when.defer();
fs.writeFile('rss.txt', data, 'utf8', function(err) {
if(err) deferred.reject(err);
deferred.resolve();
});
pemulangan tertunda.janji;
}
整合:
getRssAddress('address.txt')
.then(getRss)
.then(saveRss)
.catch(function(err) {
console.log(err);
});
解释:
promise/A规范定义的“Deferred/Promise”模型就是“发布/订阅者”模型,通过Deferred对象发布事件件,有事件,模型,通过Tertunda ,或者是失败reject事件;通过Promise对象进行对应完成或失败的订阅。
在Promises/A规范中,每个任务都有三种状态:默认(pending)、完成(ditepati)、失败(ditolak)>。2.默认状态还可以单向转移到失败状态,这个过程叫menolak,对应的方法是 3.默认状态时,还可以通过ditunda.notify(kemas kini)来宣告任务执行信息,如执行进度;>4.状态的转移是一次性的,一旦任务由初始的pending转为其他状态,就会进入到个个下们中。
异步数据获取成功后,发布一个完成事件。 tertunda.menyelesaikan(data);
kemudian有三个参数,分别是diDipenuhi、padaDitolak、sedang berlangsung
上一个任务被resolve(data),diFulfilled函数就会被触发,data作为它的参数. 任何时候,diFulfilled和onRejected都只有其一可以被触发,并且只触发一次。
tertunda.tolak(err);
pulangan tertunda.janji;
getRssAddress('address.txt')
上一个任务被menolak(sebab),那么ditolak就会被触发,收到alasan。
});
Janji给异步编程带来了巨大的方便,可以让我们专注于单个任务的实现而金实现而间以上代码仅仅是基本使用,when.js提供的功能远远不止本文提到的的这些,具体参照官方API。

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

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ringkasan: Pengaturcaraan tak segerak dalam C++ membenarkan berbilang tugas tanpa menunggu operasi yang memakan masa. Gunakan penunjuk fungsi untuk mencipta penunjuk kepada fungsi. Fungsi panggil balik dipanggil apabila operasi tak segerak selesai. Perpustakaan seperti boost::asio menyediakan sokongan pengaturcaraan tak segerak. Kes praktikal menunjukkan cara menggunakan penunjuk fungsi dan boost::asio untuk melaksanakan permintaan rangkaian tak segerak.

Apabila aplikasi web menjadi lebih kompleks, pengaturcara terpaksa menggunakan pengaturcaraan tak segerak untuk mengendalikan sejumlah besar permintaan dan operasi I/O. PHP: HypertextPreprocessor tidak terkecuali. Untuk memenuhi keperluan ini, ReactPHP telah menjadi salah satu rangka kerja pengaturcaraan tak segerak yang paling popular untuk PHP. Dalam artikel ini, kita akan membincangkan cara melakukan pengaturcaraan tak segerak dalam PHP menggunakan ReactPHP. 1. Pengenalan kepada ReactPHP ReactPHP ialah pengaturcaraan berasaskan peristiwa

Fungsi JavaScript Pengaturcaraan Asynchronous: Kemahiran Penting untuk Mengendalikan Tugasan Kompleks Pengenalan: Dalam pembangunan front-end moden, pengendalian tugas yang kompleks telah menjadi bahagian yang amat diperlukan. Kemahiran pengaturcaraan tak segerak fungsi JavaScript adalah kunci untuk menyelesaikan tugas yang kompleks ini. Artikel ini akan memperkenalkan konsep asas dan kaedah praktikal biasa bagi pengaturcaraan tak segerak fungsi JavaScript, dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan teknik ini dengan lebih baik. 1. Konsep asas pengaturcaraan tak segerak Dalam pengaturcaraan segerak tradisional, kodnya ialah

Cara melaksanakan pemprosesan mesej tak segerak dalam PHP Pengenalan: Dalam aplikasi web moden, pemprosesan mesej tak segerak menjadi semakin penting. Pemprosesan mesej tak segerak boleh meningkatkan prestasi dan kebolehskalaan sistem dan meningkatkan pengalaman pengguna. Sebagai bahasa pengaturcaraan sisi pelayan yang biasa digunakan, PHP juga boleh melaksanakan pemprosesan mesej tak segerak melalui beberapa teknologi. Dalam artikel ini, kami akan memperkenalkan beberapa kaedah untuk melaksanakan pemprosesan mesej tak segerak dalam PHP dan memberikan contoh kod. Menggunakan Baris Giliran Mesej Baris Gilir Mesej ialah cara menyahganding komponen sistem, membenarkan komponen berbeza

Pemahaman mendalam tentang ciri baharu PHP8: Bagaimana untuk menggunakan pengaturcaraan dan kod tak segerak dengan cekap? PHP8 ialah versi utama terkini bahasa pengaturcaraan PHP, membawakan banyak ciri baharu dan penambahbaikan yang menarik. Salah satu ciri yang paling menonjol ialah sokongan untuk pengaturcaraan tak segerak. Pengaturcaraan tak segerak membolehkan kami meningkatkan prestasi dan responsif apabila menangani tugas serentak. Artikel ini akan melihat secara mendalam ciri pengaturcaraan tak segerak PHP8 dan menerangkan cara menggunakannya dengan cekap. Pertama, mari kita fahami apa itu pengaturcaraan tak segerak. Dalam model pengaturcaraan segerak tradisional, kod mengikut urutan linear

3 masalah dan penyelesaian biasa dalam pengaturcaraan tak segerak dalam rangka kerja Java: Callback Hell: Gunakan Promise atau CompletableFuture untuk mengurus panggilan balik dalam gaya yang lebih intuitif. Perbalahan sumber: Gunakan primitif penyegerakan (seperti kunci) untuk melindungi sumber yang dikongsi dan pertimbangkan untuk menggunakan koleksi selamat benang (seperti ConcurrentHashMap). Pengecualian tidak terkendali: Mengendalikan pengecualian dalam tugas secara eksplisit dan menggunakan rangka kerja pengendalian pengecualian (seperti CompletableFuture.exceptionally()) untuk mengendalikan pengecualian.

Rangka kerja Go menggunakan ciri serentak dan tak segerak Go untuk menyediakan mekanisme untuk mengendalikan tugas serentak dan tak segerak dengan cekap: 1. Keselarasan dicapai melalui Goroutine, membolehkan berbilang tugasan dilaksanakan pada masa yang sama 2. Pengaturcaraan tak segerak dilaksanakan melalui saluran, yang boleh dilaksanakan tanpa menyekat utas utama Tugas 3. Sesuai untuk senario praktikal, seperti pemprosesan serentak permintaan HTTP, pemerolehan tak segerak data pangkalan data, dsb.

Pengenalan kepada JS-Torch JS-Torch ialah perpustakaan JavaScript pembelajaran mendalam yang sintaksnya hampir sama dengan PyTorch. Ia mengandungi objek tensor berfungsi sepenuhnya (boleh digunakan dengan kecerunan yang dijejaki), lapisan dan fungsi pembelajaran mendalam, dan enjin pembezaan automatik. JS-Torch sesuai untuk penyelidikan pembelajaran mendalam dalam JavaScript dan menyediakan banyak alatan dan fungsi yang mudah untuk mempercepatkan pembangunan pembelajaran mendalam. Image PyTorch ialah rangka kerja pembelajaran mendalam sumber terbuka yang dibangunkan dan diselenggara oleh pasukan penyelidik Meta. Ia menyediakan set alat dan perpustakaan yang kaya untuk membina dan melatih model rangkaian saraf. PyTorch direka bentuk untuk menjadi ringkas, fleksibel dan mudah digunakan, dan ciri graf pengiraan dinamiknya menjadikan
