Rumah > hujung hadapan web > tutorial js > Bagaimanakah Janji Mengendalikan Ralat dan Menyebarkannya Melalui Rantaian?

Bagaimanakah Janji Mengendalikan Ralat dan Menyebarkannya Melalui Rantaian?

Linda Hamilton
Lepaskan: 2024-12-04 04:12:16
asal
171 orang telah melayarinya

How Do Promises Handle Errors and Propagate Them Through a Chain?

Memahami Janji Rantaian dan Pengendalian Ralat

Janji menyediakan mekanisme untuk mengendalikan operasi tak segerak dengan membenarkan pembangun merantainya bersama-sama dan menurunkan ralat atau hasil. Walau bagaimanapun, adalah penting untuk memahami cara janji menangani ralat untuk memanfaatkannya dengan berkesan.

Janji Janji dan Penolakan Ralat

Dalam contoh yang disediakan:

promise1.then(...)
promise2.then(...)
promise3.then(...)
Salin selepas log masuk

Masing-masing kemudiannya tidak membayangkan pergantungan pada kejayaan penyelesaian janji sebelumnya. Sebaliknya, ini menunjukkan pergantungan pada resolusi janji sebelumnya, tidak kira sama ada ia dipenuhi atau ditolak.

Pengendalian Ralat dalam Janji

Pengendalian ralat tidak dikendalikan secara automatik dalam janji. Adalah menjadi tanggungjawab pembangun untuk melampirkan pengendali ralat kepada setiap satu, jika mereka ingin mengendalikan ralat.

Dalam contoh, promise1 mengendalikan ralat, tetapi promise2 dan promise3 tidak. Oleh itu, apabila d1 menolak dengan ralat, promise1 mencatat ralat dan mengembalikannya, tetapi promise2 dan promise3 menerima hasil pengendali ralat promise1 (yang tidak ditentukan) dan menganggapnya sebagai janji yang dipenuhi.

Untuk mengendalikan ralat dengan betul, seseorang mesti:

  • Lampirkan pengendali ralat pada setiap operasi kemudian secara eksplisit.
  • Lempar semula ralat dalam pengendali ralat jika ia perlu disebarkan kepada janji berikutnya.
  • Sebagai alternatif, kembalikan janji yang ditolak untuk menolak janji berikutnya.

Janji Rantai vs Penyebaran Ralat

Adalah salah untuk menganggap bahawa rantaian janji secara automatik menyebarkan ralat. Jika ralat tidak dikendalikan secara eksplisit dan disebarkan semula, janji-janji berikutnya tidak akan menerimanya. Inilah sebabnya mengapa pengendali ralat adalah penting dalam janji.

Contoh dengan Penyebaran Semula Ralat

Untuk menyebarkan ralat dengan betul, contoh boleh diubah suai seperti berikut:

var d1 = d();

var promise1 = d1.promise.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise2 = promise1.then(
    function(wins) { return wins;},
    function(err) { throw err;});
var promise3 = promise2.then(
    function(wins) { return wins;},
    function(err) { throw err;});

d1.reject(new Error());
Salin selepas log masuk

Dengan pengubahsuaian ini, ralat merebak melalui rantaian, dan semua janji akan berlaku tolak.

Kesimpulan

Memahami cara janji mengendalikan ralat adalah penting untuk pengendalian ralat yang berkesan dalam operasi tak segerak. Adalah penting untuk melampirkan pengendali ralat secara eksplisit, membuang semula ralat untuk penyebaran atau mengembalikan janji yang ditolak untuk menangani kegagalan dengan betul dan mengekalkan integriti rantaian janji.

Atas ialah kandungan terperinci Bagaimanakah Janji Mengendalikan Ralat dan Menyebarkannya Melalui Rantaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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