मैं javax.script JDK के पैकेज का उपयोग कर रहा *।। विशेष रूप से, मैं जावास्क्रिप्ट इंजन का उपयोग कर रहा हूं, जो मैंने पढ़ा है, वह मोज़िला-विकसित जावास्क्रिप्ट-इन-जावा दुभाषिया पर आधारित है जो राइनो नामक है।व्याख्या जावास्क्रिप्ट: रोक/शुरू करने लिपियों
मेरा लक्ष्य क्या है आशा करती हूं कि मूल रूप से मेरी जावास्क्रिप्ट "ठहराव" ही कोड में एक निश्चित बिंदु (जैसे कि, आधे रास्ते एक समारोह कॉल के माध्यम से) पर और केवल अपने आप बाद में फिर से शुरू कर दिया है करने के लिए जब जावा यह करने के लिए अनुमति देता है इसलिए।
इसे समझने के लिए मैं क्या मतलब है, यह जावा स्क्रिप्ट कोड की कल्पना:
function myJSFunction() {
print("Hello ");
mysteriousPauseFunction(); // this is the part I'm wondering about. basically, the script should break here and resume later at Java's discretion...
// upon reaching this comment, we know now that Java has told JavaScript that it's okay to resume, so the next line will now be executed...
print("world");
}
"रोक"/"तोड़ने" भाग एक जावा समारोह बंधन और यह वर्तमान ScriptEngine के लिए एक संदर्भ गुजर शामिल है या जो कुछ भी, कि अगर मेरे साथ शांत मैं सोच रहा हूं कि इसमें शायद यह शामिल होगा: जावास्क्रिप्ट को जावा के भीतर से रोकना।
मैंने कुछ googling किया और पाया कि यहां कीवर्ड "निरंतरता" प्रतीत होता है। जो मैं बता सकता हूं, राइनो केवल व्याख्या मोड (बनाम संकलित मोड) में निरंतरता का समर्थन करता है, जिसे मैं "संदर्भ" से 2 तक सेट करके पूरा करता हूं। चूंकि अंतर्निहित जेडीके स्क्रिप्टइंजिन संदर्भों के बारे में कुछ भी नहीं बताता है (या शायद मैं इसे याद कर रहा हूं), क्या इसका मतलब है कि मुझे मोज़िला की राइनो लाइब्रेरी को सीधे डाउनलोड करना और उपयोग करना है?
और राइनो निरंतरता क्या मैं इसे पूरा करने की जरूरत है? मुझे राइनो निरंतरता पर a useful tutorial मिला है, लेकिन इसके माध्यम से पढ़ने के बाद, मैं 100% निश्चित नहीं हूं कि यह ऊपर वर्णित किए गए कार्यों को पूरा करने में सक्षम होगा। इसका मतलब यह है कि जब मैं अपने स्क्रिप्ट को फिर से शुरू, सभी चर सेट नहीं किया गया है जाएगा, जब तक मैं उन्हें क्रमानुसार: यदि यह है मैं क्या देख रहा हूँ, तो मेरे अनुवर्ती सवाल "क्रमबद्धता" उल्लेख के बारे में है?
अद्यतन: ऐसा लगता है कि यह राइनो के साथ संभव है। मेरी जावास्क्रिप्ट में अब तक जो कुछ है, वह यहां है; कोड के बाद, मैं समझाऊंगा यह क्या करता है ...
var end = new Continuation();
function myJSFunction()
{
print("Hello ");
var kont = new Continuation();
storePause(script, kont); // script is previously bound by Java into the JavaScript. it is a reference to the script itself.
end();
print("world");
}
मेरे "storePause()" समारोह है, यह एक जावा समारोह जो मैं लिखा है है, और यह जावास्क्रिप्ट के लिए बाध्य है, लेकिन अभी कुछ नहीं करता मेरा अगला लक्ष्य अपने कोड को बाहर निकालना होगा जैसे कि यह निरंतरता और स्क्रिप्ट जानकारी को जावा ऑब्जेक्ट्स के रूप में संग्रहीत करता है, ताकि जावा बाद में स्क्रिप्ट को फिर से शुरू कर सके।
अभी, यह क्या कर रहा है "हैलो" मुद्रित होने के बाद स्क्रिप्ट को रोकना/"तोड़ना" है, लेकिन "दुनिया" से पहले मुद्रित होने से पहले, यह मुझे साबित करता है कि इस तरह एक स्क्रिप्ट को रोकना संभव है।
तो, इस बिंदु पर पता लगाने के लिए मुझे जो कुछ छोड़ना चाहिए, वह एक निरंतरता को फिर से शुरू करना है। ध्यान दें कि उपरोक्त काम जेडीके स्क्रिप्टिंग इंजन का डिफ़ॉल्ट रूप से उपयोग करते हैं (मुझे इस बिंदु पर संकलित मोड बनाम संकलित मोड के बारे में चिंता करने की आवश्यकता नहीं है - यह व्याख्या मोड के लिए डिफ़ॉल्ट प्रतीत होता है), लेकिन ऐसा लगता है कि एक स्क्रिप्ट को फिर से शुरू करने की प्रक्रिया मोज़िला की राइनो लाइब्रेरी की आवश्यकता होगी।
ब्लॉग साइट प्रतिक्रिया नहीं दे रही है। –
@ जेसेग्लिक हेड-अप के लिए धन्यवाद। ऐसा लगता है कि मुझे अपनी साइट को किसी नए वेब सर्वर या कुछ स्थानांतरित करने की आवश्यकता है। इस बीच, यहां एक archive.org संस्करण है: https://web.archive.org/web/20130730231256/http://www.joshforde.com/blog/index.php/2011/12/tutorial-continuations-in -mozilla-राइनो एक जावास्क्रिप्ट-दुभाषिया के लिए जावा / – Josh1billion