Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript进程已经在运行,然后等待_Javascript_Process - Fatal编程技术网

Javascript进程已经在运行,然后等待

Javascript进程已经在运行,然后等待,javascript,process,Javascript,Process,我无法让函数工作。它应该检查Iexplore.exe是否正在运行,如果正在运行,请稍候。如果没有,则运行脚本 我不知道如何在中添加等待函数 function main() { var ieinfostate = false; var iewait = setInterval(function () { if (ProcessesRunning("iexplore.exe") != 1) { clearInterval(iewait); dosomethingelse(); } e

我无法让函数工作。它应该检查Iexplore.exe是否正在运行,如果正在运行,请稍候。如果没有,则运行脚本

我不知道如何在中添加等待函数

function main() {
var ieinfostate = false;
var iewait = setInterval(function () {
if (ProcessesRunning("iexplore.exe") != 1) {
    clearInterval(iewait);
    dosomethingelse();
} else if (ieinfostate == false) {

浏览器中的Javascript没有等待功能,也无法实现

在您的特定情况下,可以使用
setInterval()
调用每隔500毫秒左右定期检查一些状态,然后在找到所需状态时,停止间隔计时器并执行一些操作

var timer = setInterval(function() {
    if (ProcessesRunning ("iexplore.exe") == 1) {
        server.logMessage( "Please close Internet explore first" );
    } else {
        clearInterval(timer);
        var shell = new ActiveXObject( "WScript.Shell" );
        server.logMessage( "Unpacking file" );
        // ...
    }
}, 500);

因为您使用的是jscript,所以有一个sleep()方法。我想。。这是最糟糕的,因为javascript是异步设计的

你可以这样做:

var ieinfostate = false;

var iewait = setInterval(function () {
    if (ProcessesRunning("iexplore.exe") != 1) {
        clearInterval(iewait);
        dosomethingelse();
    } else if (ieinfostate == false) {
        ieinfostate = true;
        server.logMessage("Please close Internet Explorer first. This installer will wait till its closed.");
    }
}, 500);

var dosomethingelse = function () {
    var shell = new ActiveXObject("WScript.Shell");
    server.logMessage("Unpacking file");
    /* your unpack stuff here */
};
遗憾的是,计时器是在windows中等待进程关闭的唯一方法

微软很难在jscript中实现有用的api,如进程状态更改事件等


如果你想把它弄干净,你应该考虑使用C、C++或C</p>谢谢大家的帮助。请你再看一遍代码好吗?@user1823753:你在试什么?你刚才把我的一部分代码复制到了你的问题中。这就是js文件包含的全部代码吗?除非您向我们展示完整的代码,否则我们无法找出您的问题所在。