假设您在 Windows Script Host (JScript) 环境中有一个简单的函数:
function say(text) {
WScript.Sleep(5000);
WScript.Echo(text);
}
可以say()
异步调用吗?
注意:此类基于浏览器的方法在 WSH 中可用setInterval()
或setTimeout
不可用。
假设您在 Windows Script Host (JScript) 环境中有一个简单的函数:
function say(text) {
WScript.Sleep(5000);
WScript.Echo(text);
}
可以say()
异步调用吗?
注意:此类基于浏览器的方法在 WSH 中可用setInterval()
或setTimeout
不可用。
不,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));
据我所知, Windows Script Host 下没有setTimeout
/等价物(令人震惊)。setInterval
但是,您可能会在 SO 上的另一个答案中找到这个简单的函数队列,这是模拟它的有用起点。基本上这个人所做的(他的名字也是“TJ”,但不是我)是创建一个函数队列,然后你调用它的主循环作为你的主方法。主循环在基于浏览器的实现中模拟心跳。很聪明,虽然我会稍微改变一下命名。