Rumah  >  Artikel  >  hujung hadapan web  >  Ia tidak begitu sukar! Untuk memahami `Janji` dalam javascript

Ia tidak begitu sukar! Untuk memahami `Janji` dalam javascript

Susan Sarandon
Susan Sarandonasal
2024-09-25 06:24:021100semak imbas

It’s not that hard! To understand `Promise` in javascript

Kandungan artikel ini sangat sesuai untuk pemula Javascript. Ia akan diterangkan dalam bahasa yang mudah dan mudah difahami, jadi anda tidak perlu risau tentang tidak memahaminya.

Janji, kenapa awak wujud?

Promise ialah titik pengetahuan yang sangat diperlukan apabila mempelajari bahasa Javascript moden. Ramai orang berasa keliru apabila membacanya. Sebab utama boleh diringkaskan dalam satu ayat:

Kod tidak lagi dilaksanakan dari atas ke bawah.

Biasanya, kod yang kami tulis dilaksanakan secara berurutan, contohnya, kami menulis kod yang dikira dari 1 hingga 3.

console.log(1)
console.log(2)
console.log(3)

Tekan F12 untuk membuka konsol penyemak imbas kami, salin kod di atas ke dalamnya, tekan Enter, dan anda boleh melihat bahawa nombor 1 hingga 3 dicetak mengikut urutan.

1
2
3

Sekarang, jika kita mempunyai keperluan bahawa susunan kod tidak boleh diubah, tetapi susunan cetakan akhir mestilah bebas daripada susunan kod, bolehkah kita melakukan ini?

Cuba bayangkan jika 1, 2, dan 3 dicetak oleh tiga orang masing-masing, maka ia akan menjadi sangat mudah. Kami hanya perlu memberitahu mereka tugas mencetak nombor pada masa yang sama dan susunan cetakan hanya akan berkaitan dengan masa pelaksanaan tugasan.

Janji, kesan ajaib

Jadi, bagaimanakah caranya kita memberikan tugas pencetakan kepada tiga orang? Di sinilah digunakan Janji. Dengan mencipta objek Promise baharu, kami boleh menetapkan bahagian kod kepada "proses" baharu dan bukannya melaksanakannya pada "proses" semasa. Ambil perhatian bahawa "proses" di sini tidak sama dengan proses sistem pengendalian yang sering kita bincangkan, tetapi hanyalah konsep abstrak, mewakili unit maya yang melaksanakan kod mengikut turutan.

Janji, Arahan Perhimpunan

Seperti yang kami katakan tadi, Janji ia boleh dianggap sebagai "proses" baharu, jadi jika kita mahu ia melaksanakan sebarang kod, kita boleh membungkusnya dalam fungsi dan memberikannya kepadanya. Dengan cara ini, kod tidak akan dilaksanakan serta-merta.

Promise juga memberikan kita dua fungsi, satu adalah azam dan satu lagi adalah menolak, yang boleh kita panggil apabila tugasan selesai dan masing-masing gagal. Kedua-dua fungsi ini dihantar ke dalaman Promise sebagai parameter. Jadi, kita boleh memasang satu seperti ini:

Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(1)
      resolve()
    }, 300)
  }
)

Di sini kami menggunakan setTimeout untuk mensimulasikan tugas yang memakan masa. Dalam senario sebenar, tugas ini mungkin membaca fail, meminta antara muka rangkaian atau menunggu input pengguna. Apabila tugasan selesai, kami memanggil fungsi resolvethe untuk menunjukkan bahawa tugasan telah selesai.

Kod lengkap

Kemudian, kami mengikuti kaedah yang sama, dan Berjanji apabila kami memasang dua yang lain, kami hanya perlu memberikan nombor cetakan yang berbeza dan masa yang diperlukan untuk tugasan itu. Akhir sekali, kod lengkap adalah seperti ini, anda boleh cuba menyalinnya ke dalam konsol dan mencubanya.

Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(1)
      resolve()
    }, 300)
  }
)
new Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(2)
      resolve()
    }, 200)
  }
)
new Promise(
  (resolve, _reject) => {
    setTimeout(() => {
      console.log(3)
      resolve()
    }, 100)
  }
)

Akhir sekali, susunan nombor dicetak adalah berkaitan dengan masa pelaksanaan tugas:

3
2
1

Janji, Model Concurrency

Pengaturcaraan serentak ialah tentang cara mensimulasikan pelaksanaan sejumlah besar tugas serentak pada bilangan teras CPU yang terhad. Janji dalam Javascript menyediakan cara pengaturcaraan serentak yang mudah dan pantas, serta satu set spesifikasi untuk mengendalikan nilai pulangan dan nilai ralat. Selepas memahami dan membiasakan diri dengan spesifikasi ini, kami boleh meningkatkan kecekapan mengendalikan tugas serentak dengan banyak.

Atas ialah kandungan terperinci Ia tidak begitu sukar! Untuk memahami `Janji` dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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