是否可以在Windows脚本宿主中异步调用JavaScript函数?

时间:2010-12-14 14:14:22

标签: asynchronous wsh jscript

想象一下,在Windows脚本宿主(JScript)环境中有一个简单的功能:

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

是否可以异步调用say()

注意:此类基于浏览器的方法setInterval()setTimeout在WSH中不可用。

2 个答案:

答案 0 :(得分:2)

不,Windows脚本宿主不支持异步调用脚本函数。您必须同时运行两个脚本才能实现此效果:

// [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));

答案 1 :(得分:1)

据我所知,Windows Script Host下没有等同于setTimeout / setInterval(令人震惊)。但是,您可能会发现this simple function queue in another answer here on SO是模拟它的有用起点。基本上这个人做了什么(他的名字也是“TJ”,但不是我)是创建一个函数队列,然后你将其主循环称为主要方法。主循环在基于浏览器的实现中模拟心跳。相当聪明,虽然我稍微改变了命名。