2011-08-25 10 views
18

कोई व्याख्या कर सकते हैं वास्तव में Eteration क्या है और एक उदाहरण दिखाते हैं?Eteration - विवरण और उदाहरण

स्रोत: Long running tasks YUI डगलस Crockford द्वारा ब्लॉग

+0

मैंने अपना उत्तर अधिक प्रासंगिक जानकारी के साथ संपादित किया है, यह बताते हुए कि ** ईथरेशन ** क्या है और जावास्क्रिप्ट के संदर्भ में इसका उपयोग कैसे किया जाता है। – luvieere

+0

मैंने संबंधित स्पष्टीकरण के साथ एक कोड नमूना जोड़ा है। – luvieere

उत्तर

32

प्रारंभ में, मैंने सोचा था कि यह सिर्फ यात्रा की एक टाइपो था, के रूप में के लिए eteration ऑनलाइन खोज पैदावार कोई महत्वपूर्ण परिणाम है।

लेकिन, फिर, मैं references पर आया जो बताता है कि यह शब्द क्रॉकफोर्ड द्वारा अपनी बातचीत में से एक है।
ऑनलाइन, केवल जगह है जहाँ मैं एक स्पष्टीकरण मिल सकता है अपने पृष्ठ पर, The Factorial Tutorial में, एक लेख जहां, अधिनियम 2 में, एक कोड नमूना के लिए एक टिप्पणी के रूप में, वह कहता है:

अधिनियम 2a :

: संदेश यात्रा (eteration)

इस मामले की एक संबंधित जोड़ी का हिस्सा बनने का, अपनी अगली कोड नमूना, कि एक ढेर का उपयोग किए बिना प्रत्यावर्तन करता है के रूप में, इस जोड़ी के अन्य सदस्य शामिल हैं लगता है

अधिनियम 2 बी: संदेश प्रत्यावर्तन (ecursion)

तो, ऐसा लगता है कि eteration और ecursion शर्तों का आविष्कार किया और खुद को Crockford द्वारा परिभाषित कर रहे E Programming Language के संदर्भ में संदेश यात्रा और प्रत्यावर्तन का उल्लेख करने के डेवलपर के लिए जिन्होंने वितरित अनुप्रयोगों के बारे में के लिए जावा के शीर्ष पर बनाया गया है।

तथ्य यह है कि भाषा को कहा जाता है, यह संभवतः अपने विशिष्ट पुनरावृत्ति और रिकर्सन को चयनित शब्दावली (** ई *** टियरेशन * और ** ई *** कर्सर *) देने का कारण है।

जावास्क्रिप्ट के संदर्भ में, Crockford अवधि eteration बात Crockford on JavaScript -- Scene 6: Loopage का हिस्सा है, मिनट से शुरू के रूप में 30:40 बताते हैं:

Eteration ताकि कई बदल जाता है में एक कार्य को तोड़ने के लिए इसका मतलब है प्रत्येक eteration पर, बजाय एक पारंपरिक लूप के माध्यम से जा रहा है, पाश हम फोन setTimeOut के नीचे में, यह एक समारोह जो का कारण बनता है पास करने का हमें अगले eteration क्या करना है। इसका मतलब है कि बारी-बारी से कम होने जा रहे हैं - बारी केवल जब तक एक के रूप में eteration है - और के रूप में हम चाहते हैं हम कई eterations के रूप में कर सकते हैं और घटना पाश बंद नहीं।

परिणाम है कि, बजाय एक तंग पाश की, इंटरफ़ेस अगर यह बहुत लंबा लूप के प्रत्येक चरण लेता है, eteration कार्यक्रम एक श्रृंखला में, अवरुद्ध कि केवल इंटरफ़ेस ब्लॉक जबकि वास्तविक कदम कार्यान्वित , कदम के बीच नहीं। यह यह संभव, इंटरफेस के रूप में एक ही धागे में लंबे समय से चल रहे कार्यों (जावास्क्रिप्ट एकल पिरोया है) प्रदर्शन करने के लिए है, जबकि आवेदन जवाबदेही को बनाए रखने में आता है।

पूर्ण बातचीत में पूर्ण बातचीत की जांच करें और पूर्ण पाठ ट्रांसक्रिप्ट here के साथ देखें।

इसके अलावा, कैसे ऐसी तकनीक लागू किया जा सकता पर एक संदर्भ के लिए, इस परिदृश्य पर विचार:

<html> 
<head> 
    <script type="text/javascript"> 
    function testFeedback() 
    { 
     var feedbackDiv = document.getElementById("feedbackDiv"); 

     feedbackDiv.innerHTML += "The Interface is Still Responsive!</br>"; 
    } 

    var currentNumber = 0; 
    var loopStepDelay = 30; 

    function performLoopStep() 
    { 
    var numbersDiv = document.getElementById("numbersDiv"); 
    numbersDiv.innerHTML = currentNumber++; 
    setTimeout("performLoopStep()", loopStepDelay); 
    } 
    setTimeout("performLoopStep()", loopStepDelay); 
    </script> 
</head> 
<body> 
    <div id="numbersDiv"></div> 
    </br> 
    </br> 
    <div id="feedbackDiv"></div> 
    </br> 
    </br> 
    <button onClick="testFeedback()">Try Me</button> 
<body> 
</html> 

दो div रों, एक चल रही eteration के सूचकांकों प्रदर्शित कर रहे हैं, अन्य पाठ जोड़कर इंटरफ़ेस अभी भी उत्तरदायी है! प्रत्येक पर मुझे बटन दबाएं। जैसा कि आप कोड से देख सकते हैं, ईथरेशन चरणों को setTimeout द्वारा कुछ समय अंतराल के आधार पर निर्धारित किया जाता है, जिससे उपयोगकर्ता बातचीत की जा सकती है और साथ ही संसाधित किया जा सकता है। इस प्रकार, उपयोगकर्ता द्वारा बटन पर क्लिक करने के बाद ईथरेशन चरण चलते रहेंगे और दूसरे div के अपडेट को ट्रिगर करते हैं, जो पेज के उत्तरदायित्व को बनाए रखते हैं, जो उस काम के साथ वास्तविक प्रगति करते हैं (इस मामले में, केवल सूचकांक प्रदर्शित करते हैं)।

+0

शायद, लेकिन शब्द जावास्क्रिप्ट और नोडजेस के समापन में प्रयोग किया जाता है। कोई ई या जावा नहीं। – Bakudan

संबंधित मुद्दे