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, seperti namanya, ialah "janji" pengembalian data yang melalui tiga keadaan utama:
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."); } });
Ini ialah cara paling biasa untuk berurusan dengan Janji sebelum tidak segerak/menunggu. Kami menggunakan kaedah then(), catch() dan finally().
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. });
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();
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!