Rumah > hujung hadapan web > tutorial js > Belajar janji javascript. Bahagian Apa itu janji?

Belajar janji javascript. Bahagian Apa itu janji?

Mary-Kate Olsen
Lepaskan: 2025-01-03 22:33:40
asal
667 orang telah melayarinya

Belajar janji javascript. Bahagian 1 — Apakah janji?

Hai, peminat javascript, hari ini saya akan memberitahu anda tentang janji dan cara anda boleh mempelajari atau memahaminya dengan lebih baik. Ramai orang berfikir bahawa ini adalah topik yang rumit dan menjadi keliru mengenainya, walaupun tidak ada yang rumit mengenainya, dan jika anda sering mempraktikkannya, anda akan menjadi pakar, saya menjaminnya. Tugas saya hari ini adalah untuk membantu anda memahami asas-asas, dan untuk menunjukkan intipati janji dan sebab kami memerlukannya.

Apakah janji dan mengapa anda memerlukannya dalam javascript?

Bayangkan anda telah berjanji kepada rakan anda bahawa anda akan bersenam secara berterusan setiap pagi dan memberitahu mereka jika anda berbuat demikian. Janji anda tidak menghalang anda atau rakan anda daripada menjalani kehidupan mereka dan mereka hanya menunggu pemberitahuan anda tentang kejayaan atau kegagalan ikrar untuk membuat kesimpulan atau tindakan mereka tentang anda.

Contoh kecil ini menggambarkan sifat janji sebagai acara dan dua pelakon yang disambungkan oleh acara ini: dalam kes ini, pengguna (rakan anda) dan pengeluar (anda):

Learn javascript promises. Part  What is a promise?

Dan jika kita memudahkannya sedikit, kita boleh mengatakan bahawa dalam javascript kita melihat tingkah laku yang sama dengan kelas Promise, yang memberi kita keupayaan untuk melaksanakan tugas tak segerak tanpa menyekat utas utama javascript dan memberitahu pelanggan apabila kita selesai janji kami.

Mari kita ambil contoh untuk mengetahui cara mengendalikannya:

Learn javascript promises. Part  What is a promise?

Mari semak kod ini mengikut urutan:

  1. Kami mencipta contoh janji dengan fungsi pelaksana (ia adalah fungsi yang kami hantar kepada pembina kelas Promise).

Fungsi pelaksana adalah asas janji, dan fungsi ini dipanggil semerta apabila janji dibuat.

Fungsi pelaksana mengambil dua parameter kedudukan, yang pertama ialah kaedah penyelesaian dan yang kedua ialah kaedah penolakan. Kedua-dua kaedah ini bertanggungjawab untuk menyelesaikan janji dalam beberapa waktu.

Sebagai contoh, kami berjanji untuk bangun setiap pagi dan bersenam selama seminggu. Dalam kes ini, janji kami bertahan selama seminggu penuh, dan jika anda tidak dapat menepatinya pada hari ke-3, anda boleh menghubungi kaedah penolakan dan semua orang yang melanggan janji anda akan mengetahuinya. Atau sebaliknya, jika anda menepati janji anda, maka pada hari ke-7 anda akan menghubungi kaedah azam, yang akan memberitahu rakan anda bahawa anda telah berjaya menunaikan ikrar anda. Oleh itu, anda dapat melihat bahawa pengguna (rakan anda) bebas sepenuhnya apabila anda memberitahu mereka keputusannya, mereka hanya perlu memastikan bahawa apabila mereka ada, mereka akan dapat mendapatkannya.

Gambar di bawah menunjukkan kemungkinan menyatakan janji, ia "belum selesai", "ditepati" dan "ditolak". Apabila janji baru sahaja dimulakan, statusnya "belum selesai". Selepas ia selesai, ia sama ada "dipenuhi" atau "ditolak", bergantung pada kaedah yang dipanggil untuk melengkapkannya.

Learn javascript promises. Part  What is a promise?

Perlu diambil perhatian bahawa pelaksana janji tidak boleh diselesaikan lebih daripada sekali, semua panggilan berikutnya untuk menyelesaikan atau menolak kaedah akan diabaikan.

  1. Pada masa ini apabila anda mengatakan anda telah menyelesaikan janji anda (dengan memanggil kaedah azam atau tolak), semua mereka yang telah melanggan janji akan menerima pemberitahuan dengan muatan, yang boleh diambil dalam dua kaedah khas contoh janji . Kaedah tersebut ialah: Janji.prototaip.kemudian dan Janji.prototaip.tangkap

Learn javascript promises. Part  What is a promise?

Menggunakan kaedah Promise.prototype.then, anda boleh mengendalikan kedua-dua senario positif dan negatif sekaligus, kerana fungsi menerima dua panggilan balik seperti dalam tangkapan skrin di atas.

Dengan Promise.prototype.catch anda boleh mengendalikan hanya senario negatif seperti ini:

Learn javascript promises. Part  What is a promise?

dan tinggalkan Promise.prototype.then untuk senario positif.

Selain itu, janji menyediakan kaedah yang boleh anda gunakan untuk melaksanakan kod yang harus dilaksanakan tanpa mengira hasilnya. Kaedah ini adalah Promise.prototype.finally:

Learn javascript promises. Part  What is a promise?

Kaedah ini tidak mengambil apa-apa dan tidak mengembalikan apa-apa, kerana ia direka untuk menyelesaikan atau membersihkan operasi sebelumnya. Contohnya, untuk menunjukkan mesej kepada pengguna atau untuk menyembunyikan pemuat.

Bagus, pada ketika ini, kami telah merangkumi asas janji, jadi saya cadangkan kita beralih kepada contoh dunia sebenar, seperti meminta data daripada API, mengubahnya daripada respons HTTP mentah kepada JSON dan mengeluarkannya ke konsol:

Learn javascript promises. Part  What is a promise?

Seperti yang anda lihat, hasil penggunaannya di dunia nyata tidak jauh berbeza dengan kemahiran yang kami praktikkan pada awal artikel. Namun begitu, anda mungkin perasan beberapa perkara baharu:

  • Hasil daripada setiap pengendali Promise.prototype.then dan Promise.prototype.catch sebelum ini diserahkan kepada pengendali Promise seterusnya. Adalah baik untuk menyebut bahawa kaedah Response.json mengembalikan janji, yang seterusnya, apabila dilaksanakan, akan mengembalikan JSON dan akan memanggil pengendali berikut menghantar JSON itu kepadanya.

  • Dalam kes Promise.prototype.finally, ia adalah pengendali "halimunan", dan anda boleh mengatakan bahawa ia menghantar respons sebelumnya melalui dirinya sendiri kepada yang seterusnya.

Hebat, saya pasti pada ketika ini anda mempunyai pemahaman yang lebih baik tentang apa itu janji, cara menggunakannya dan keadaan yang boleh dimilikinya. Selain itu, saya ingin menyenaraikan di bawah perkara utama yang telah kami bahas hari ini (lembaran curang):

Ringkasan:

  • Javascript promise — ia adalah objek khas yang membolehkan anda melaksanakan operasi tak segerak dan memberitahu pengguna mengenainya apabila ia selesai

  • Instance Promise boleh mempunyai 3 keadaan —”belum selesai”, “ditepati” dan “ditolak”

  • Terdapat tiga kaedah utama contoh janji — “kemudian”, “tangkap” dan “akhirnya”.

  • Promise.prototype.then — direka untuk mengendalikan kedua-dua penolakan dan keputusan yang berjaya

  • Promise.prototype.catch — direka untuk mengendalikan keputusan yang ditolak

  • Promise.prototype.finally — direka untuk membuat beberapa kerja pembersihan

  • Anda boleh merantai pengendali anda dalam sebarang susunan yang anda mahu, mereka akan dilaksanakan secara berurutan

  • Hasil daripada janji sebelumnya masuk ke seterusnya, jadi untuk membuat rantaian janji dapat dilanjutkan, anda mesti ingat untuk mengembalikan janji daripada pengendali setiap kali kecuali pengendali "akhirnya".

Dalam bahagian topik ini yang akan datang, kami akan membincangkan teknik janji yang lebih maju dan menyelidiki dengan lebih mendalam keupayaannya, jadi langgan, suka dan nantikan!

Atas ialah kandungan terperinci Belajar janji javascript. Bahagian Apa itu janji?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan