想象一下,在Windows脚本宿主(JScript)环境中有一个简单的功能:
function say(text) {
WScript.Sleep(5000);
WScript.Echo(text);
}
是否可以异步调用say()
?
注意:此类基于浏览器的方法setInterval()
或setTimeout
在WSH中不可用。
答案 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”,但不是我)是创建一个函数队列,然后你将其主循环称为主要方法。主循环在基于浏览器的实现中模拟心跳。相当聪明,虽然我稍微改变了命名。