3

Windows Script Host (JScript) 環境に単純な関数があるとします。

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

say()非同期で呼び出すことはできますか?

注:setInterval()やなどのブラウザ ベースの方法setTimeoutは、WSH では使用できません。

4

2 に答える 2

3

いいえ、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));
于 2010-12-14T14:36:17.910 に答える
1

私の知る限り、Windows Script HostにはsetTimeout/に相当するものはありません (衝撃的です)。setIntervalただし、この単純な関数キューは、SO の別の回答でエミュレートするための便利な出発点になる場合があります。基本的に、彼 (彼の名前は「TJ」ですが、私ではありません) が行ったことは、関数キューを作成し、そのメイン ループをメイン メソッドとして呼び出すことでした。メイン ループは、ブラウザー ベースの実装でハートビートをエミュレートします。かなり賢いですが、名前を少し変更します。

于 2010-12-14T14:32:04.167 に答える