वादा डिस्पोजर पैटर्न को समझना
आपने अपने कोड में वादा डिस्पोजर पैटर्न का सामना किया है, लेकिन इसका उद्देश्य मायावी बना हुआ है। इस लेख का उद्देश्य अवधारणा को स्पष्ट करना और इसके अनुप्रयोग को प्रदर्शित करना है।
समस्या अवलोकन
आपके कोड स्निपेट में:
function getDb() {
return myDbDriver.getConnection();
}
var users = getDb().then(function (conn) {
return conn.query("SELECT name FROM users").finally(function (users) {
conn.release();
});
});
यदि आप प्रत्येक getDb कॉल के बाद डेटाबेस कनेक्शन जारी करने की उपेक्षा करते हैं तो आपको संभावित संसाधन लीक की समस्या का सामना करना पड़ता है। यदि संसाधन सीमा पार हो जाती है तो इससे सिस्टम फ्रीज हो सकता है।
डिस्पोजर पैटर्न का परिचय
वादा डिस्पोजर पैटर्न एक कोड स्कोप और उसके संसाधन के बीच एक मजबूत संबंध स्थापित करता है मालिक है. संसाधन को दायरे से जोड़कर, आप दायरा समाप्त होने पर इसकी शीघ्र रिहाई सुनिश्चित करते हैं, जिससे निरीक्षण का जोखिम समाप्त हो जाता है। यह पैटर्न C# के उपयोग, Python के with, Java के Try-with-resource और C के RAII से समानता रखता है।
पैटर्न संरचना
डिस्पोजर पैटर्न एक विशिष्ट का अनुसरण करता है संरचना:
withResource(function (resource) {
return fnThatDoesWorkWithResource(resource); // returns a promise
}).then(function (result) {
// resource disposed here
});
इसे अपने कोड पर लागू करना
अपने कोड को डिस्पोजर पैटर्न में रीफैक्टर करके:
function withDb(work) {
var _db;
return myDbDriver.getConnection().then(function (db) {
_db = db; // keep reference
return work(db); // perform work on db
}).finally(function () {
if (_db) _db.release();
});
}
अब आप अपने पिछले कोड को इस प्रकार फिर से लिख सकते हैं:
withDb(function (conn) {
return conn.query("SELECT name FROM users");
}).then(function (users) {
// connection released here
});
सुनिश्चित करें कि उचित निपटान की गारंटी के लिए संसाधन अंतिम ब्लॉक के भीतर जारी किया गया है।
वास्तविक दुनिया के उदाहरण
के उल्लेखनीय उदाहरण व्यवहार में डिस्पोज़र पैटर्न में सीक्वेलाइज़ और क्नेक्स (बुकशेल्फ़ का क्वेरी बिल्डर) शामिल हैं। इसके अनुप्रयोग जटिल अतुल्यकालिक प्रक्रियाओं को प्रबंधित करने तक विस्तारित हैं, जैसे कि कई AJAX अनुरोधों के पूरा होने के आधार पर लोडिंग संकेतक दिखाना और छिपाना।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3