JScript等待函数

3

我有一个用JScript编写的函数(不是JavaScript),我需要将其挂起,直到某个全局变量变为true。 当另一个函数在ajax响应之后被调用时,该全局变量将更改为true:

function(req, event, data) {
        globalVariable = true;
    } 

当我尝试循环直到变量为真时:
while (globalVariable!= true) {
}

我进入了一个繁忙的等待状态,但回调函数从未被调用。

有人建议使用WScript.wait(),但我的应用程序似乎不知道WScript。 SetTimeout()也无法帮助,因为它是异步调用,不会挂起我的原始函数。

还有其他建议吗?

关于我的问题,以下是更多信息:

我想让我的脚本调用2个函数:

waitWhileAjaxIsNotCompleted();
doSomthingElse();

我希望waitWhileAjaxIsNotCompleted()能够点击提交 ajax 请求的按钮 (由 A4J 实现),并在 ajax 完成后终止。为了知道何时 ajax 执行完成,我注册了一个函数作为监听器,当 ajax 执行完成时会被唤醒。此函数会改变全局变量的值。
我的 waitWhileAjaxIsNotComplete() 进入一个无限循环,等待全局变量的值发生变化。当它发生变化 (监听器被唤醒后),我就可以结束这个函数,并继续执行 doSomthingElse() 函数。
你可以在以下链接中查看更多实现细节:QTP Web extensibilty toolkit and ajax

这里是一个问题和答案:https://dev59.com/3kvSa4cB1Zd3GeqPg8KM - Artem Oboturov
1个回答

0

我不记得几个月前用的是什么了,因为我已经不再使用Jscript(没有足够的时间)...但是我正在查看我的程序,看看我是否仍然保存有该脚本。几个月前我也做了完全相同的事情。 一旦我找到它,我就会发布代码...

非常抱歉,我似乎找不到那段代码片段了。可能是我不小心删掉了...这种事情经常发生。

所以,在更好的解决方案出现之前,我能想到的唯一办法就是将您的代码放入一个无限循环中,并在 GlobalVariable 返回 true 时简单地使用 break; 跳出循环。

希望这可以帮到您。我会继续努力,直到找到那个代码片段或者提供更好的答案。


1
谢谢。我尝试过了,但当进入无限循环时,没有其他函数可以被调用来将全局变量更改为true。我需要在无限循环中使用wait(),以便可以执行其他函数。 - Eldad
这让我感到困惑。你能否提供更多关于这个问题的细节? - jay_t55
1
我编辑了问题,添加了更多有关问题的细节。 - Eldad
这个问题我已经好几天没有回复了,我看到你前几天添加的额外细节,但仍然无法解决。我一直在网上搜索解决方案,但似乎没有人尝试过这个...我会继续搜索,因为这是一个非常有趣的问题,如果我找到解决方案或者至少有用的东西,我会重新发布。 - jay_t55
好的...我又回来了。没什么大事报告。你有没有试过在http://www.microsoft.com/connect 上与Jscript开发者交流?他们在那边非常热心哦... :-) - jay_t55

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接