Rumah >hujung hadapan web >tutorial js >Mengapa Janji Berantai Tanpa Mengembalikan Nilai Menghasilkan Nilai yang Tidak Ditakrifkan?

Mengapa Janji Berantai Tanpa Mengembalikan Nilai Menghasilkan Nilai yang Tidak Ditakrifkan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-19 22:13:29713semak imbas

Why Do Promises Chain Without Returning a Value Result in Undefined Values?

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!

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