Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Mengelakkan Nilai Tidak Ditakrifkan Apabila Merantai .then() kepada Janji?

Bagaimana untuk Mengelakkan Nilai Tidak Ditakrifkan Apabila Merantai .then() kepada Janji?

Linda Hamilton
Linda Hamiltonasal
2024-10-19 22:18:29362semak imbas

How to Avoid Undefined Values When Chaining .then() to Promises?

Merantai .then() kepada Janji: Mengelak Nilai Yang Tidak Ditakrifkan

Apabila merantai pelbagai kaedah .then() kepada Janji, adalah penting untuk kembalikan nilai atau Janji daripada setiap pengendali .then() untuk mengelak daripada menghadapi nilai yang tidak ditentukan pada panggilan .then() berikutnya.

Dalam contoh anda:

<code class="javascript">function doStuff(n) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(n * 10);
    }, Math.floor(Math.random() * 1000));
  })
  .then((result) => {
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
  });
}

doStuff(9)
.then((data) => {
  console.log(data); // undefined
});</code>

Isu di sini ialah bahawa pertama pengendali .then() tidak mengembalikan sebarang nilai atau Janji. Akibatnya, apabila pengendali .then() kedua dipanggil, ia tidak mempunyai apa-apa untuk digunakan.

Untuk membetulkannya, hanya kembalikan hasil daripada pengendali .then() pertama:

<code class="javascript">function doStuff(n) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(n * 10);
    }, Math.floor(Math.random() * 1000));
  })
  .then((result) => {
    if (result > 100) {
      console.log(result + " is greater than 100");
    } else {
      console.log(result + " is not greater than 100");
    }
    return result; // return the result to avoid undefined at next .then()
  });
}

doStuff(9)
.then((data) => {
  console.log("data is: " + data); // data is not undefined
});</code>

Kini, pengendali .then() kedua akan menerima hasil daripada pengendali pertama sebagai parameter data dan ia tidak akan ditakrifkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Nilai Tidak Ditakrifkan Apabila Merantai .then() kepada Janji?. 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