Возможен ли асинхронный вызов функции JavaScript в Windows Script Host? - PullRequest
3 голосов
/ 14 декабря 2010

Представьте, что у вас есть простая функция в среде Windows Script Host (JScript):

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

Можно ли вызвать say() асинхронно?

Примечание: Такие браузерные методы, как setInterval() или setTimeout, недоступны в WSH.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Нет, Windows Script Host не поддерживает асинхронный вызов функций скрипта. Вам нужно будет запустить два сценария одновременно для достижения этого эффекта:

// [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 голос
/ 14 декабря 2010

Насколько я знаю, нет эквивалента setTimeout / setInterval под Windows Script Host (шокирующе). Однако вы можете найти эту простую очередь функций в другом ответе здесь, на SO , полезной отправной точкой для ее эмуляции. В основном то, что сделал парень (его зовут также «TJ», но это не я), - это создание очереди функций, а затем вы вызываете ее основной цикл в качестве основного метода. Основной цикл эмулирует пульс в реализациях на основе браузера. Довольно умно, хотя я бы немного изменил название.

...