javascript - मूल ES6 वादों में Bluebird Promise.finally के बराबर क्या है?



(1)

7 फरवरी 2018 तक

Chrome 63+, फ़ायरफ़ॉक्स 58+ और ओपेरा 50+ Promise.finally समर्थन करते हैं।

Node.js 8.1.4+ (V8 5.8+) में, सुविधा ध्वज के पीछे उपलब्ध है --harmony-promise-finally

Promise.prototype.finally github.com/tc39/proposal-promise-finally वर्तमान में TC39 प्रक्रिया के चरण 3 में है।

इस बीच में सभी ब्राउज़रों में वादा किया है। आप उस कॉलबैक को हमेशा लागू करने के लिए एक अतिरिक्त then() catch() बाद then() जोड़ सकते हैं

उदाहरण:

myES6Promise.then(() => console.log('Resolved'))
            .catch(() => console.log('Failed'))
            .then(() => console.log('Always run this'));

JSFiddle डेमो: https://jsfiddle.net/9frfjcsg/

या आप finally() विधि (अनुशंसित नहीं finally() शामिल करने के लिए प्रोटोटाइप का विस्तार कर सकते हैं:

Promise.prototype.finally = function(cb) {
    const res = () => this;
    const fin = () => Promise.resolve(cb()).then(res);
    return this.then(fin, fin);
};

JSFiddle डेमो: https://jsfiddle.net/c67a6ss0/1/

वहाँ भी Promise.prototype.finally शिम पुस्तकालय है।

इस सवाल का पहले से ही यहाँ एक जवाब है:

ब्लूबर्ड एक finally विधि प्रदान करता है जिसे आपके वादे की श्रृंखला में जो कुछ भी कहा जाता है उसे कहा जा रहा है। मुझे यह सफाई के उद्देश्यों के लिए बहुत आसान लगता है (जैसे एक संसाधन को अनलॉक करना, एक लोडर को छिपाना, ...)

क्या ईएस 6 मूल वादों में एक बराबर है?






bluebird