Rumah >hujung hadapan web >tutorial js >Apakah perbezaan antara Promise Chaining dan Aync/await

Apakah perbezaan antara Promise Chaining dan Aync/await

Linda Hamilton
Linda Hamiltonasal
2024-11-16 15:47:02332semak imbas

Qual a diferença de Encadeamento de Promises e Aync/await

Hari ini saya berhadapan dengan kejahilan saya sendiri tentang perbezaan antara dua cara menangani operasi tak segerak ini, jadi saya memutuskan untuk membaca dan menyelidik untuk menulis siaran ini — sebagai peringatan kepada diri saya sendiri dan, Siapa tahu, mungkin membantu pembangun lain untuk lebih memahami perbezaan ini.

Pada masa itu, saya lebih kurang tahu bagaimana untuk menerangkan bahawa mereka berdua melakukan perkara yang sama, dengan then() membawa data yang diselesaikan, manakala menyelesaikan dan menolak digunakan untuk berakhir dengan kejayaan atau kesilapan. Async/waiit telah menunggu untuk menunggu keputusan sebelum beralih ke langkah seterusnya. Ia tidak salah sepenuhnya, tetapi ia boleh dijelaskan dengan cara yang lebih baik.

Janji

Janji, seperti namanya, ialah "janji" pengembalian data yang melalui tiga keadaan utama:

  1. Belum selesai: Keadaan awal, apabila janji masih belum diselesaikan atau ditolak.
  2. Dipenuhi: Operasi telah berjaya diselesaikan.
  3. Ditolak: Operasi gagal dan ralat telah ditangkap.
const minhaPromise = new Promise((resolve, reject) => {
  let sucesso = true; // Apenas um exemplo condicional

  if (sucesso) {
    resolve("Operação concluída com sucesso!");
  } else {
    reject("Ocorreu um erro na operação.");
  }
});

Janji Rantai

Ini ialah cara paling biasa untuk berurusan dengan Janji sebelum tidak segerak/menunggu. Kami menggunakan kaedah then(), catch() dan finally().

  • then(): Digunakan untuk menerima dan memanipulasi data yang berjaya diselesaikan.
  • catch(): Digunakan untuk menangani ralat apabila janji ditolak.
  • akhirnya(): Digunakan untuk melaksanakan kod tanpa mengira hasilnya.
minhaPromise
  .then((mensagem) => {
    console.log(mensagem); // "Operação concluída com sucesso!"
  })
  .catch((erro) => {
    console.error(erro); // Se der erro, isso será executado.
  })
  .finally(() => {
    console.log("Finalizando a execução da Promise"); // Sempre será executado.
  });

Async/Tunggu

Fungsi bertanda async secara automatik mengembalikan Janji dan menunggu digunakan untuk "menjeda" pelaksanaan sehingga Janji diselesaikan.

async function buscarDados() {
  try {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
    const data = await response.json();
    console.log("Dados recebidos:", data);
  } catch (error) {
    console.error("Erro ao buscar dados:", error);
  }
}

buscarDados();

Perbezaan

Perantaian janji boleh menyebabkan kod menjadi sangat bersarang, terutamanya apabila kita menggunakan beberapa then() berturut-turut, menjadikan bacaan lebih sukar.

Async/wait membolehkan anda menulis kod tak segerak dengan cara yang lebih serupa dengan kod segerak, menjadikan logik lebih mudah dibaca dan difahami. Kod menjadi lebih bersih, terutamanya apabila kita perlu mengendalikan berbilang operasi tak segerak.

Selain itu, cara untuk mengendalikan ralat menggunakan try/catch dengan async/wait adalah lebih intuitif daripada hanya menggunakan catch dalam Promises.

Atas ialah kandungan terperinci Apakah perbezaan antara Promise Chaining dan Aync/await. 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