私はJDKのjavax.script。*パッケージを使用しています。具体的には、JavaScriptエンジンを使用しています.JavaScriptエンジンは、私が読んだところでは、Mozillaが開発したRhinoというJavaScript-in-Javaインタープリタに基づいているようです。RhinoでJavaでJavaScriptを解釈する:スクリプトの一時停止/再開
私が達成しようとしているのは、基本的には、自分のJavaScriptをコード内の特定のポイント(たとえば、関数呼び出しの途中)で「一時停止」でき、後でJavaが許可したときに再開できるそう。
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");
}
「一時停止」/「破壊」の部分は、Javaの機能を結合し、それを現在のたScriptEngineへの参照または何を渡す関係している場合、それはだ:、私が何を意味するかを示し、このJavaScriptコードを想像する
私と一緒に涼しい。私はそれがおそらく、Java内からJavaScriptを一時停止することであると考えています。
私はいくつかの検索を行い、ここのキーワードが「継続」であることがわかりました。私が知る限り、Rhinoはインタプリタモード(コンパイルモードと比較して)でのみ継続をサポートしていますが、これは "コンテキスト"を-2に設定することで実現します。組み込みのJDK ScriptEngineはコンテキストについて何も言及していないので(あるいは、私が紛失しているかもしれない)、これはMozillaのRhinoライブラリを直接ダウンロードして使用する必要があるのでしょうか?
これを達成するために必要なのはRhinoの継続ですか?私はa useful tutorialをRhinoの続きで見つけましたが、それを読んだ後、私が上で説明したことを達成できるかどうかは100%確信していません。このがの場合、私のフォローアップの質問は「シリアライゼーション」です。私のスクリプトを再開すると、シリアル化しない限り、すべての変数は設定されていませんか?
更新:これはRhinoで可能です。これまでのところ私のJavaScriptには何がありますか?コードの後に、私は...それが何をするかを説明します
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()」関数は、それを今、私が書いたJava関数であり、それはJavaScriptにバインドされていますが、何もしない。私の次の目標は、Javaがスクリプトを後で再開できるように、Javaオブジェクトとして継続情報とスクリプト情報を格納するようにコードを完成させることです。
「Hello」が印刷されてから「world」が印刷される前に、スクリプトを一時停止または「中断」しているので、この方法でスクリプトを一時停止することができます。
この時点で私が把握しておくべきことは、継続を再開する方法です。上記の動作は、デフォルトでJDKスクリプトエンジンを使用していることに注意してください(私はこの時点でインタプリタモードとコンパイルモードを心配する必要はなく、デフォルトの解釈モードと思われます)が、スクリプトを再開するプロセスのようですMozillaのRhinoライブラリが必要です。
ブログのサイトが応答していません。 –
@JesseGlickがヘッドアップに感謝します。私のサイトを新しいWebサーバーなどに移動する必要があるように見えます。その間、archive.orgのバージョンは次のとおりです。https://web.archive.org/web/20130730231256/http://www.joshforde.com/blog/index.php/2011/12/tutorial-continuations-in -mozilla-rhino-a-javascript-interpreter-for-java / – Josh1billion