स्विफ्ट कॉम्बिनेशन

Mar 24 2023
प्रकाशक और सब्सक्राइबर इस लेख में, हम कंबाइन फ्रेमवर्क के दो प्रमुख घटकों PUBLISHER और SUBSCRIBER की मूल बातें देखेंगे। Apple ने साल 2019 में कॉम्बिनेशन नाम से बिल्ट-इन सिस्टम फ्रेमवर्क पेश किया था।

प्रकाशक और सदस्य

इस लेख में, हम कंबाइन फ्रेमवर्क के दो प्रमुख घटकों PUBLISHER और SUBSCRIBER की मूल बातें देखेंगे। Apple ने वर्ष 2019 में कम्बाइन नामक बिल्ट-इन सिस्टम फ्रेमवर्क पेश किया। फ्रेमवर्क समय के साथ डेटा को प्रोसेस करने के लिए घोषणात्मक एपीआई प्रदान करता है।

प्रकाशक

प्रकाशक एक प्रकार है जो प्रोटोकॉल प्रकाशक की पुष्टि करता है। यह एक या एक से अधिक ग्राहकों को ईवेंट भेज सकता है।

प्रकाशक प्रोटोकॉल दो प्रकारों में सामान्य है

  1. आउटपुट → यह आउटपुट मानों का प्रकार है जो प्रकाशक द्वारा उत्सर्जित किया जा रहा है
  2. विफलता → यह उस प्रकार की त्रुटि है जो तब फेंकी जाती है जब प्रकाशक मूल्यों का उत्सर्जन करने में विफल रहता है
  1. आउटपुट मूल्य / एस
  2. एक पूर्णता

एक प्रकाशक घटनाओं को तभी प्रकाशित करेगा जब उसकी सदस्यता ली जा रही हो।

प्रकाशक का एक प्रमुख कार्य प्राप्त होता है, जो प्रकाशक के आउटपुट से मेल खाने के लिए ग्राहक से इनपुट पैरामीटर लेता है।

ग्राहक

सब्सक्राइबर परिभाषित करता है कि उसे प्रकाशक से किस प्रकार का इनपुट प्राप्त होना चाहिए।

सब्सक्राइबर प्रोटोकॉल दो प्रकारों में सामान्य है

  1. इनपुट → यह इनपुट वैल्यू का प्रकार है जिसे ग्राहक द्वारा नियंत्रित किया जा सकता है
  2. विफलता → यह उस प्रकार की त्रुटि है जिसे प्रकाशक से विफलता प्राप्त करने पर ग्राहक द्वारा नियंत्रित किया जा सकता है

प्रकाशक और सब्सक्राइबर के साथ काम करना

प्रकाशक बना रहा है

कंबाइन फ्रेमवर्क द्वारा प्रदान किए गए किसी भी प्रकार का उपयोग करके प्रकाशक बनाया जा सकता है जैसे Just, Future, PassthroughSubject, CurrentValueSubject आदि।

सब्सक्राइबर बनाना

सब्सक्राइबर इनबिल्ट प्रकारों का उपयोग करके बनाया जा सकता है जैसे

  1. डूबना
  2. सौंपना

सब्सक्राइबर को प्रकाशक से जोड़ने का सबसे आसान तरीका सिंक है

सिंक दो क्लोजर प्रदान करता है, एक प्रकाशक से मूल्य को स्वीकार करने और संभालने के लिए और दूसरा पूर्णता को संभालने के लिए

के लिए आवंटित: )

असाइन टू विल प्रकाशक से मूल्य लेता है और इसे किसी दिए गए ऑब्जेक्ट को असाइन करता है

उदाहरण: प्रकाशक और ग्राहक के कार्य को प्रदर्शित करना

अनुक्रम

अनुक्रम प्रकाशक मूल्यों के अनुक्रम का उत्सर्जन करेगा और फिर अंत में पूर्णता को कॉल करेगा।

आउटपुट:

दिए गए उदाहरण में, हम देख सकते हैं कि प्रकाशक पहले सभी मानों को अनुक्रमिक क्रम में उत्सर्जित करता है और अंत में पूर्णता ब्लॉक को कॉल करता है

अभी

Just Publisher प्रत्येक ग्राहक को ठीक एक बार अपना आउटपुट तुरंत भेजेगा और फिर समाप्त कर देगा।

बस प्रकाशक त्रुटि से विफल नहीं हो सकता।

आउटपुट:

जैसा कि उल्लेख किया गया है, वर्तमान मूल्य भेजने के ठीक बाद पूर्णता को पूरा करता है।

भविष्य

भविष्य का प्रकाशक एसिंक्रोनस ऑपरेशन के मूल्य या विफलता का उत्सर्जन करेगा और फिर समाप्त करेगा। फ्यूचर क्लोजर की मदद से ऐसा करने को प्रॉमिस कहते हैं। वादा एक परिणाम पैरामीटर लेगा जो या तो मूल्य या विफलता हो सकता है। वादे में मूल्य या विफलता प्राप्त करने के बाद भविष्य समाप्त हो जाएगा।

ऊपर दिए गए उदाहरण में, हम देख सकते हैं कि Future एक प्रॉमिस क्लोजर का आह्वान कर रहा है जो वैल्यू को लेता है।

आउटपुट:

यहां "स्टार्टेड रनिंग" पहले छपा हुआ है, क्योंकि सब्सक्राइबर पहले प्रकाशक की सदस्यता ले रहा है, जो अतुल्यकालिक कार्य शुरू करता है। फिर यह "एंड" प्रिंट करता है क्योंकि async ऑपरेशन प्रगति पर है और अंत में यह प्राप्त मूल्य और प्राप्त पूर्णता को प्रिंट करता है।

पासथ्रू सब्जेक्ट

PassthroughSubject कई मान उत्सर्जित करेगा और इसका कोई प्रारंभिक मान नहीं है। सब्सक्राइबर को अटैच करने पर यह सेंड (:) मेथड से वैल्यू प्राप्त कर सकता है।

उपरोक्त उदाहरण में, हम देख सकते हैं कि PassthroughSubject का कोई प्रारंभिक मान नहीं है। भेजें (:) विधि का उपयोग करके प्रकाशक को मूल्य भेजने पर , ग्राहक के प्राप्त मूल्य कॉलबैक में इसका परिणाम निकलता है।

आउटपुट:

वर्तमान मूल्य विषय

CurrentValueSubject वर्तमान मान का उत्सर्जन करेगा और इसे बनाए जाने के दौरान प्रारंभिक मूल्य के साथ आरंभ किया जाना चाहिए। सब्सक्राइबर को इसमें संलग्न करने पर, प्रकाशक पासथ्रूसबजेक्ट के समान सेंड (:) विधि से मूल्य प्राप्त कर सकता है। मूल्य संपत्ति का उपयोग करके प्रकाशक के वर्तमान मूल्य तक पहुँचा जा सकता है । प्रकाशक को नया वर्तमान मूल्य निर्दिष्ट करने के लिए उसी का उपयोग किया जा सकता है।

उपरोक्त उदाहरण से पता चलता है कि प्रकाशक को प्रारंभिक मान 0 के साथ प्रारंभ किया गया है। PassthroughSubject की तरह, हम प्रकाशक को मान भेजने के लिए (:) विधि का उपयोग कर सकते हैं ।

Value संपत्ति में CurrentValueSubject का उपयोग वर्तमान मूल्य प्राप्त करने के लिए किया जा रहा है और वर्तमान मूल्य को निर्दिष्ट करने के लिए भी किया जा रहा है ।

आउटपुट:

अंशदान

सब्सक्राइबर द्वारा सब्सक्राइब किए गए प्रकाशक को सब्सक्रिप्शन कहा जाता है। सदस्यता " रद्द करने योग्य " प्रोटोकॉल की पुष्टि करती है ।

[नोट: जब सब्सक्राइबर अब प्रकाशक से मूल्य प्राप्त नहीं करना चाहता है तो सदस्यता को रद्द करने की सिफारिश की जाती है। इसे "रद्द करें" पद्धति का उपयोग करके रद्द किया जा सकता है। अगर इसे स्पष्ट रूप से नहीं कहा जाता है, तो यह प्रकाशक पूरा होने पर ही सदस्यता बंद कर देगा]

आउटपुट:

मुझे उम्मीद है कि मैंने कुछ मूलभूत बातें शामिल की हैं जो आपको प्रकाशक और सब्सक्राइबर के आसपास खेलने में मदद करेंगी। हैप्पी लर्निंग!

धन्यवाद :)