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

Linda Hamilton
Lepaskan: 2024-10-19 22:18:29
asal
359 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan