。:免責条項:Node.js - 別のスレッドでスクリプトの実行を一時停止する
私はnode.jsで何かを達成しようとしていますが、これは設計原則に反している可能性があります。しかし、node.jsが "javascript is client side"の規範に反しているので、私はここでも何か違うことを試みています。私と一緒に抱きしめてください。
。:背景:
私は、単純化されたユーザーのための簡単なスクリプトのために、Javaスクリプトを説明する必要がある(最初から最後まで読む)必要があります。より高度なユーザー向けに非同期スクリプティング機能も提供します。
私はnode.jsのイベントドリブンの方法を理解しており、非同期コールバックに基づいたソリューションを用意しています。今私はより基本的なスクリプティング要件のためにこれを単純化しようとしています。
。:質問:
結果が配信されている間に実行を一時停止できるスクリプト(独自のサンドボックスを使用)を実行する方法はありますか。
など。
var util = require('util'),
vm = require('vm'),
user = require('user');
vm.runInThisContext('user.WaitForProceed(); console.log('Waiting over');');
console.log('Finished!');
ユーザーは待機を行う自分のモジュールです。基本的には、結果が返ってくるまで、そこに座ってVMオブジェクトのその行をブロックします。その後、console.log行に進みます。
この例の出力は、コールバックによっても達成できるので、重要ではありません。サンプルスクリプトの物語は、このソリューションにとってより重要です。
- J
これは、NORM(?)の "javascriptはクライアント側のためのもの"と宣言していますか、それともあなた(そして他の人)だけがそこでそれを見て、あなたが知っていた唯一のものを宣言したのですか?ノルム "?とにかく、一時停止する方法はありません。 JSマシンは引き続きイベントループを実行し、実行する必要がない場合にのみ停止します。したがって、停止する唯一の方法は、コードとイベントがなくなることです(イベントリスナーが接続された状態で)。あなたができる唯一のことは、その "進行"イベントを待つことです。 –
... "あなたの"ユーザ "オブジェクトによって発砲されるイベントを持っている必要があります。しかし、あなたはすでにこのような解決策を持っていると言いました。そのために、JSエンジン自体が実際にどのように動作するのかが重要です。次に、このようなことについて、より良い気持ちになるでしょう。 –
"...これはJSエンジン自体が実際にどのように働くかで重要なことです..."ノルムは他の人が私に物事が "うまくいくはず"と言う方法です。私はノードの限界と機能を理解していますが、すべての開発者と同様、そうでない人も扱っています。彼らはしかし、彼らの方法で、このシステムを使用したい。私は単に可能なことを探求します。 – Nevar