] यह लेख वादा-आधारित संचालन को पुनः प्राप्त करने के लिए विभिन्न पैटर्न प्रस्तुत करता है, तीन सामान्य परिदृश्यों पर ध्यान केंद्रित करता है। यह रिट्रीज़ और अधिकतम संख्या के प्रयासों के बीच देरी को निर्दिष्ट करता है।
नया वादा लौटाएं (फ़ंक्शन (संकल्प, अस्वीकार) {
var त्रुटि;
var प्रयास = फ़ंक्शन () {
if (समय == 0) {
अस्वीकार (त्रुटि);
} अन्य {
fn ()। तब (संकल्प)
.catch (फ़ंक्शन (e) {
टाइम्स--;
त्रुटि = ई;
setTimeOut (फ़ंक्शन () {प्रयास ()}, देरी);
});
}
};
कोशिश करना();
});
}; यह रिट्रीज और अधिकतम संख्या के प्रयासों के बीच देरी को निर्दिष्ट करता है।
.then (फ़ंक्शन (परिणाम) {
नया वादा लौटाएं (फ़ंक्शन (संकल्प, अस्वीकार) {
var intervalid = setInterval (फ़ंक्शन () {
work.requeststatus (परिणाम) .then (फ़ंक्शन (परिणाम 2) {
स्विच (result2.status) {
मामला "प्रगति": ब्रेक; //कुछ भी नहीं है
मामला "सफलता": ClearNterval (अंतराल); हल (परिणाम 2); तोड़ना;
मामला "विफलता": ClearNterval (अंतराल); अस्वीकार (परिणाम 2); तोड़ना;
}
})। पकड़ (फ़ंक्शन (त्रुटि) {ClearInterVal (अंतराल); अस्वीकार (त्रुटि)});
}, 1000);
});
})
.then (फ़ंक्शन () {कंसोल.लॉग ('किया')})
.catch (Console.Error); यह केवल रिट्रीज के बीच एक देरी को निर्दिष्ट करता है। यह प्रयासों की संख्या को सीमित करता है और अत्यधिक स्मृति की खपत से बचने के लिए कम-अधिकतम परिदृश्यों के लिए उपयुक्त है।
नया वादा लौटाएं (फ़ंक्शन (संकल्प, अस्वीकार) {
सेटटाइमआउट (अस्वीकार।
});
…
var p = primate.reject ();
for (var i = 0; i
निष्कर्ष
चाहे।