"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > प्रॉमिस डिस्पोज़र पैटर्न क्या है और यह कैसे काम करता है?

प्रॉमिस डिस्पोज़र पैटर्न क्या है और यह कैसे काम करता है?

2024-11-09 को प्रकाशित
ब्राउज़ करें:736

What is the Promise Disposer Pattern and How Does it Work?

वादा डिस्पोजर पैटर्न को समझना

आपने अपने कोड में वादा डिस्पोजर पैटर्न का सामना किया है, लेकिन इसका उद्देश्य मायावी बना हुआ है। इस लेख का उद्देश्य अवधारणा को स्पष्ट करना और इसके अनुप्रयोग को प्रदर्शित करना है।

समस्या अवलोकन

आपके कोड स्निपेट में:

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 अनुरोधों के पूरा होने के आधार पर लोडिंग संकेतक दिखाना और छिपाना।

विज्ञप्ति वक्तव्य यह आलेख यहां पुनर्मुद्रित है: 1729234278 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.कॉम से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3