Rumah  >  Artikel  >  hujung hadapan web  >  Melaksanakan penggunaan objek Promise dalam JavaScript

Melaksanakan penggunaan objek Promise dalam JavaScript

WBOY
WBOYasal
2023-06-16 09:04:39890semak imbas

JavaScript ialah bahasa pengaturcaraan tak segerak Apabila memproses operasi tak segerak, menggunakan fungsi panggil balik ialah kaedah tradisional Walau bagaimanapun, terlalu banyak tahap fungsi panggil balik yang bersarang akan menyebabkan kebolehbacaan kod yang rendah dan kos penyelenggaraan yang tinggi. Untuk menyelesaikan masalah ini, ES6 memperkenalkan objek Promise, yang boleh mengendalikan operasi tak segerak dengan lebih baik.

Objek Promise ialah objek yang mewakili penyempurnaan terakhir (kejayaan) atau kegagalan (kegagalan) operasi tak segerak. Ia menjadikan kod tak segerak kelihatan seperti kod segerak dan mengelakkan lapisan latar belakang bersarang. Dalam JavaScript, penggunaan objek Promise dibahagikan kepada tiga peringkat:

  1. Mencipta objek Promise
  2. Selepas operasi tak segerak selesai, dua situasi (kejayaan dan kegagalan) dikendalikan masing-masing
  3. Dapatkan hasil operasi tak segerak

Di bawah, kita akan melihat pelaksanaan setiap peringkat satu demi satu.

  1. Buat objek Promise

Kita boleh menggunakan kata kunci baharu untuk mencipta objek Promise dan lulus dalam fungsi pelaksana. Fungsi pelaksana mempunyai dua parameter, menyelesaikan dan menolak. penyelesaian digunakan untuk mengendalikan kejayaan operasi tak segerak, dan tolak digunakan untuk mengendalikan kegagalan operasi tak segerak.

Sebagai contoh, cipta objek Promise untuk mensimulasikan operasi tak segerak:

const promise = new Promise((resolve, reject) => {
  // 异步操作
  setTimeout(() => {
    const result = Math.random();
    if (result >= 0.5) {
      resolve(result);
    } else {
      reject('操作失败');
    }
  }, 1000);
});

Dalam contoh di atas, operasi tak segerak disimulasikan melalui setTimeout. Jika nombor yang dijana secara rawak lebih besar daripada atau sama dengan 0.5, operasi tak segerak berjaya jika tidak, ia gagal dan mesej ralat dilemparkan.

  1. Selepas operasi tak segerak selesai, dua situasi (kejayaan dan kegagalan) dikendalikan masing-masing

Secara umumnya, selepas operasi tak segerak selesai, kita perlu melaksanakan keputusan pelaksanaan berurusan dengan. Menggunakan objek Promise, kita boleh mengendalikan kejayaan dan kegagalan masing-masing dengan memanggil kaedah then() dan catch().

Dalam kes kejayaan, kita perlu menghantar fungsi panggil balik sebagai parameter kaedah then() Fungsi panggil balik menerima hasil operasi tak segerak yang berjaya sebagai parameter.

Dalam kes kegagalan, kita perlu menghantar fungsi panggil balik sebagai parameter kaedah tangkapan() Fungsi panggil balik menerima sebab kegagalan operasi tak segerak sebagai parameter.

Teruskan contoh di atas dan kendalikan kejayaan dan kegagalan operasi tak segerak:

promise.then((result) => {
  console.log(`操作成功,结果为:${result}`);
}).catch((reason) => {
  console.log(`操作失败,原因为:${reason}`);
});

Dalam contoh di atas, apabila operasi tak segerak berjaya, fungsi panggil balik dalam kaedah then() akan melaksanakan. Sebaliknya, apabila operasi tak segerak gagal, fungsi panggil balik dalam kaedah catch() akan dilaksanakan. Dengan cara ini, kami boleh melakukan pemprosesan selanjutnya dengan mudah berdasarkan hasil operasi tak segerak.

  1. Dapatkan hasil operasi tak segerak

Dalam sesetengah kes, kita perlu mendapatkan hasil operasi tak segerak, seperti apabila terdapat pergantungan antara dua operasi tak segerak. Pada masa ini, anda boleh menggunakan kaedah statik Promise.all() yang disediakan oleh objek Promise, yang boleh menggabungkan berbilang objek Promise ke dalam objek Promise baharu dan mengembalikan semua hasil operasi selepas semua operasi selesai.

Sebagai contoh, dalam kod berikut kami mencipta dua objek Promise, masing-masing mensimulasikan dua operasi tak segerak dan mengeluarkan keputusan selepas kedua-duanya selesai:

const promise1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('操作1完成');
  }, 1000);
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('操作2完成');
  }, 2000);
});

Promise.all([promise1, promise2]).then((results) => {
  console.log(results);
}).catch((reason) => {
  console.log(`操作失败,原因为:${reason}`);
});

Dalam contoh di atas, Ambil perhatian bahawa Kaedah Promise.all() menerima tatasusunan yang mengandungi objek Promise sebagai parameter. Apabila semua objek Promise selesai, fungsi panggil balik dalam kaedah then() akan melaksanakan dan mengeluarkan hasil daripada dua operasi tak segerak.

Ringkasnya, menggunakan objek Promise boleh melakukan pengaturcaraan tak segerak dengan lebih baik Ia boleh memudahkan kod untuk operasi tak segerak dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Di atas adalah proses terperinci menggunakan objek Promise dalam JavaScript Saya harap ia akan membantu pembaca.

Atas ialah kandungan terperinci Melaksanakan penggunaan objek Promise 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