WindowsスクリプトホストでJavaScript機能の非同期コールは可能ですか?

StackOverflow https://stackoverflow.com/questions/4440052

  •  09-10-2019
  •  | 
  •  

質問

Windows Script Host(JScript)環境に単純な機能があると想像してください。

function say(text) {
    WScript.Sleep(5000);
    WScript.Echo(text);
}

電話することは可能ですか? say() 非同期?

ノート: そのようなブラウザベースのメソッド setInterval() また setTimeout WSHでは利用できません。

役に立ちましたか?

解決

いいえ、Windowsスクリプトホストは、スクリプトの呼び出し関数を非同期的にサポートしていません。この効果を達成するには、2つのスクリプトを同時に実行する必要があります。

// [main.js]
var oShell = new ActiveXObject("WScript.Shell");
oShell.Run(WScript.FullName + " say.js Hello");

WScript.Echo("Hello from main");

 

// [say.js]
WScript.Sleep(5000);
WScript.Echo(WScript.Arguments.Item(0));

他のヒント

私の知る限り、同等のものはありません setTimeout / setInterval Windowsスクリプトホスト(衝撃的に)の下。ただし、見つけることができます この単純な関数キューは、ここで別の答えをキューにしています それをエミュレートするための有用な出発点。基本的に、男がしたこと(彼の名前も「TJ」ですが、私ではありません)は関数キューを作成し、そのメインループをメインメソッドと呼びます。メインループは、ブラウザベースの実装でハートビートをエミュレートします。私は命名を少し変えますが、非常に賢いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top