Corak Reka Bentuk Mana Yang Wujud untuk Percubaan Semula Janji Asynchronous?

Mary-Kate Olsen
Lepaskan: 2024-10-22 18:53:03
asal
275 orang telah melayarinya

Which Design Patterns Exist for Asynchronous Promise Retries?

Merancang Corak untuk Mencuba Semula Janji

Dalam pengaturcaraan tak segerak, selalunya berguna untuk mencuba semula janji yang gagal sehingga ia diselesaikan. Berikut ialah tiga corak reka bentuk untuk mencapai ini dengan Janji:

1. Cuba Semula Sehingga Janji Selesai (dengan Kelewatan dan Cubaan Semula Maks)

Corak ini membolehkan anda mencuba semula janji sehingga ia berjaya diselesaikan, dengan kelewatan antara setiap percubaan semula. Ia menggunakan gelung for untuk mencipta rangkaian pengendali .catch(), diikuti oleh pengendali .then() untuk penyelesaian yang berjaya.

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).catch(rejectDelay);
}
p = p.then(processResult).catch(errorHandler);</code>
Salin selepas log masuk

2. Cuba Semula Sehingga Keadaan Bertemu pada Keputusan (tanpa Lengah)

Corak ini membolehkan anda mencuba semula janji sehingga syarat tertentu dipenuhi pada hasilnya. Ia menggunakan pendekatan rantai .catch() yang serupa seperti corak sebelumnya, tetapi bukannya rejectDelay, ia menggunakan pengendali .then() untuk menguji keputusan.

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).then(test);
}
p = p.then(processResult).catch(errorHandler);</code>
Salin selepas log masuk

3. Cuba Semula Sehingga Keadaan Bertemu pada Keputusan (dengan Kelewatan)

Corak ini menggabungkan dua corak sebelumnya, membolehkan anda mencuba semula janji sehingga syarat dipenuhi, dengan kelewatan antara setiap percubaan semula. Ia menggunakan rantai .catch() untuk mengendalikan percubaan semula dan pengendali .then() untuk melaksanakan ujian dan memperkenalkan kelewatan.

<code class="javascript">var max = 5;
var p = Promise.reject();

for(var i=0; i<max; i++) {
    p = p.catch(attempt).then(test).catch(rejectDelay);
}
p = p.then(processResult).catch(errorHandler);</code>
Salin selepas log masuk

Corak ini menyediakan cara yang ringkas dan cekap untuk mengendalikan percubaan semula dengan Janji, memastikan bahawa kod anda terus dilaksanakan walaupun kegagalan berlaku. Ia boleh disesuaikan untuk memenuhi keperluan khusus aplikasi anda, mengimbangi faktor seperti percubaan semula maksimum, selang kelewatan dan keadaan cuba semula.

Atas ialah kandungan terperinci Corak Reka Bentuk Mana Yang Wujud untuk Percubaan Semula Janji Asynchronous?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!