वादा पुनः प्रयास डिज़ाइन पैटर्न: एक मेमोरी-कुशल दृष्टिकोण
वादों का उपयोग करते समय, विफलताओं की स्थिति में या कुछ शर्तों के पूरा होने तक संचालन का पुनः प्रयास करना एक सामान्य आवश्यकता की पूर्ति होती है। इस लेख में, हम तीन प्रॉमिस रिट्री डिज़ाइन पैटर्न का पता लगाएंगे:
1। वादा हल होने तक पुनः प्रयास करें
यह पैटर्न वादा हल होने तक पुनः प्रयास करता रहता है। यह अधिकतम पुनर्प्रयास संख्या और प्रयासों के बीच विलंब निर्दिष्ट करता है।
Promise.retry = function(fn, times, delay) {
return new Promise(function(resolve, reject) {
var error;
var attempt = function() {
if (times == 0) {
reject(error);
} else {
fn().then(resolve)
.catch(function(e){
times--;
error = e;
setTimeout(function(){attempt()}, delay);
});
}
};
attempt();
});
};
2. परिणाम पर शर्त पूरी होने तक पुनः प्रयास करें
यह पैटर्न तब तक पुनः प्रयास करता है जब तक कि वादे के परिणाम पर एक निर्दिष्ट शर्त पूरी नहीं हो जाती। इसमें अधिकतम पुनर्प्रयास संख्या और प्रयासों के बीच विलंब भी शामिल है।
work.publish()
.then(function(result){
return new Promise(function(resolve, reject){
var intervalId = setInterval(function(){
work.requestStatus(result).then(function(result2){
switch(result2.status) {
case "progress": break; //do nothing
case "success": clearInterval(intervalId); resolve(result2); break;
case "failure": clearInterval(intervalId); reject(result2); break;
}
}).catch(function(error){clearInterval(intervalId); reject(error)});
}, 1000);
});
})
.then(function(){console.log('done')})
.catch(console.error);
3. मेमोरी-कुशल गतिशील पुनर्प्रयास
यह पैटर्न एक पुनरावर्ती दृष्टिकोण का उपयोग करता है, जो कॉन्फ़िगर करने योग्य विलंब के साथ असीमित पुनर्प्रयास की पेशकश करता है।
var max = 5;
var p = Promise.reject();
for(var i=0; iएक .catch() श्रृंखला का निर्माण करके, यह पैटर्न संक्षिप्त पुनः प्रयास कार्यान्वयन की अनुमति देता है, विशेष रूप से कम अधिकतम पुनर्प्रयास गणना या सिंक्रोनस परीक्षणों वाले परिदृश्यों में।
इनमें से प्रत्येक पैटर्न प्रॉमिस ऑपरेशंस को पुनः प्रयास करने के लिए एक लचीला और कुशल समाधान प्रदान करता है। आपके एप्लिकेशन की आवश्यकताओं के आधार पर, आप वह पैटर्न चुन सकते हैं जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त हो।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3