Memahami Nilai Tidak Ditakrifkan dalam Janji Berantai
Dalam JavaScript, Promises digunakan untuk operasi tak segerak. Mereka menyediakan cara untuk mengendalikan hasil pengiraan dan mengendalikan senario seperti kejayaan dan kegagalan. Walau bagaimanapun, kadangkala kita menghadapi nilai yang tidak dijangka yang tidak ditentukan apabila merantai Janji.
Punca Punca: Merantai Tanpa Nilai Pulangan
Janji dirantai menggunakan kaedah .then(). Apabila Promise diselesaikan atau ditolak, kaedah .then() mengembalikan objek Promise baharu. Walau bagaimanapun, jika tiada nilai atau Promise dikembalikan secara eksplisit daripada kaedah .then(), objek Promise baharu akan diselesaikan dengan nilai lalai undefined.
Contoh:
<code class="javascript">doStuff(9) .then(function(result) { // No value or Promise returned if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } }) .then(function(data) { console.log(data); // Output: undefined });</code>
Dalam contoh ini, kaedah .then() pertama tidak mengembalikan sebarang nilai. Akibatnya, kaedah .then() kedua menerima undefined sebagai hujahnya, yang kemudiannya dicetak ke konsol.
Penyelesaian: Mengembalikan Nilai atau Janji
Untuk mengelakkan nilai yang tidak ditentukan dalam Janji berantai, nilai atau janji yang mengembalikan nilai mesti dikembalikan secara eksplisit daripada kaedah .then().
Contoh:
<code class="javascript">doStuff(9) .then(function(result) { if (result > 100) { console.log(result + " is greater than 100"); } else { console.log(result + " is not greater than 100"); } // Return the result to avoid undefined at the next .then() return result; }) .then(function(data) { console.log("data is: " + data); // Output: "data is: 90" });</code>
Dengan mengembalikan hasil, kaedah .then() kedua menerima nilai hasil sebenar dan bukannya undefined.
Atas ialah kandungan terperinci Mengapa Janji Berantai Tanpa Mengembalikan Nilai Menghasilkan Nilai yang Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!