तो यह वास्तव में नहीं बल्कि सीधे आगे है, एक बुनियादी स्तर पर वहाँ कार्यों के 2 प्रकार शामिल हैं:
कार्य है कि एक प्रतिक्रियाशील प्रसंग बना (प्रतिक्रियाशील समारोह)
कार्य है कि एक प्रतिक्रियाशील अमान्य संदर्भ (फ़ंक्शन को अमान्य करना)
कार्य जो दोनों कर सकते हैं। (मैं झूठ बोला था वहाँ 3 रहे हैं)
जब आप एक reactive function
फोन यह एक context
कि उल्का भंडार विश्व स्तर पर और जो reactive function
सब्सक्राइब करने के लिए एक invalidation
कॉलबैक पैदा करता है। फ़ंक्शन जिसे आप एक प्रतिक्रियाशील फ़ंक्शन, या उसके भीतर से चलने वाले किसी भी फ़ंक्शन पर पास करते हैं, invalidating function
हो सकता है और वर्तमान context
को पकड़ सकता है और इसे स्थानीय रूप से संग्रहीत कर सकता है। ये फ़ंक्शंस किसी भी समय, एक डीबी अपडेट या बस टाइमर कॉल की तरह, context
को अमान्य कर सकते हैं। मूल reactive function
तब उस घटना को प्राप्त करेगा और स्वयं का पुनर्मूल्यांकन करेगा।
यहाँ उल्का कार्यों का उपयोग कर कदम से एक कदम है (ध्यान दें कि Tracker.autorun
Deps.autorun
कहा जाता था):
Tracker.autorun(function(){
alert("Hello " + Session.get("name"));
});
Session.set("name", "Greg");
- ऑटोरन अपने पैरामीटर के रूप में एक समारोह लेता
- से पहले ऑटोरन इस समारोह चलता है, यह बनाता है
context
- autorun
context
की अमान्यता घटना
- पर कॉलबैक संलग्न करता है यह कॉलबैक फिर से चलाएगा यह कार्य autorun
- पर पारित किया गया है, फिर फ़ंक्शन को पहली बार
context
में चलाया जाता है।
- उल्का भंडार वर्तमान में सक्रिय
context
- समारोह के अंदर के रूप में विश्व स्तर पर इस
context
एक और समारोह है: है Session.get()
- Session.get() दोनों एक
reactive function
और एक invalidating function
- Session.get सेट इसे खुद
context
है और सहयोगियों यह कुंजी "नाम"
- Session.get वर्तमान संदर्भ (ऑटोरन के संदर्भ) को पुन: प्राप्त विश्व स्तर पर उल्का
- अमान्यकरण कॉलबैक से कि Session.get मैं करने के लिए पंजीकृत करता है के साथ आंतरिक टी के स्वयं के संदर्भ के लिए, बस को अमान्य कर देंगे यह संदर्भ संलग्न है (इस मामले में, ऑटोरन के संदर्भ)
- तो अब हम 2 संदर्भों, ऑटोरन और session.get के
जब इन कार्यों लौटने के लिए, उल्का सक्रिय संदर्भ वैश्विक चर को साफ किया है
सत्र।सेट context
को अमान्य करने में सक्षम एक और फ़ंक्शन है।
इस मामले में
- हम सत्र द्वारा बनाई गई सभी
context
रों कुंजी "नाम" उन
contexts
की
- सभी, जब अवैध उनके अमान्यकरण कॉलबैक चलाने के साथ जुड़े अमान्य कर रहे हैं।
- उन कॉलबैक सिर्फ अपने enclosing
context
रों (यह Session.get के डिजाइन है और नहीं क्या एक अमान्यकरण कॉलबैक करना चाहिए)
- उन enclosing
contexts
अब उनके अमान्यकरण कॉलबैक चलाने अमान्य हो जाएगा।
- ऑटोरन मामले में, वह कॉलबैक उस कार्य को चलाता है जिसे हम मूल रूप से ऑटोरन में पास करते हैं और फिर
context
को फिर से सेट करते हैं।
पूरे कार्यान्वयन वास्तव में नहीं बल्कि सीधे आगे और साथ ही है, तो आप इसे यहाँ देख सकते हैं:
https://github.com/meteor/meteor/blob/master/packages/tracker/tracker.js
और यह कैसे काम करता है का एक अच्छा उदाहरण यहां पाया जा सकता:
https://github.com/meteor/meteor/blob/master/packages/reactive-dict/reactive-dict.js
प्रतिक्रियाशील प्रोग्रामिंग वास्तव में उल्का या जेएस विशिष्टनहीं है आप इसके बारे में यहां पढ़ सकते हैं: http://en.wikipedia.org/wiki/Reactive_programming
इस अच्छी व्याख्या के लिए अच्छा धन्यवाद –
ग्रेट स्पष्टीकरण यह उल्का पृष्ठ में होना चाहिए। – alejandro
यह वीडियो बहुत उपयोगी था http://www.eventedmind.com/posts/meteor-reactivity-with-contexts – jonperl