Windows Script Host (JScript) 環境に単純な関数があるとします。
function say(text) {
WScript.Sleep(5000);
WScript.Echo(text);
}
say()非同期で呼び出すことはできますか?
注:setInterval()やなどのブラウザ ベースの方法setTimeoutは、WSH では使用できません。
Windows Script Host (JScript) 環境に単純な関数があるとします。
function say(text) {
WScript.Sleep(5000);
WScript.Echo(text);
}
say()非同期で呼び出すことはできますか?
注:setInterval()やなどのブラウザ ベースの方法setTimeoutは、WSH では使用できません。
いいえ、Windows Script Host はスクリプト関数の非同期呼び出しをサポートしていません。この効果を得るには、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));
私の知る限り、Windows Script HostにはsetTimeout/に相当するものはありません (衝撃的です)。setIntervalただし、この単純な関数キューは、SO の別の回答でエミュレートするための便利な出発点になる場合があります。基本的に、彼 (彼の名前は「TJ」ですが、私ではありません) が行ったことは、関数キューを作成し、そのメイン ループをメイン メソッドとして呼び出すことでした。メイン ループは、ブラウザー ベースの実装でハートビートをエミュレートします。かなり賢いですが、名前を少し変更します。