3

我有一个用 JScript(不是 javascript)编写的函数,我需要暂停,直到某个全局变量变为真。在 ajax 响应后调用另一个函数时,全局变量更改为 true:

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

当我尝试循环直到变量为真时:

while (globalVariable!= true) {
}

我进入了忙碌的等待状态,并且从未调用过回调函数。

有些人建议使用 WScript.wait() 但我的应用程序并不了解 WScript。SetTimeout() 也无济于事,因为它是异步调用并且不会暂停我的原始功能。

还有什么建议吗?

关于我的问题的更多信息:我希望我的脚本调用 2 个函数:

waitWhileAjaxIsNotCompleted();
doSomthingElse();

我希望waitWhileAjaxIsNotCompleted()单击提交 ajax 请求(由 A4J 实现)的按钮并在 ajax 完成时终止。为了让我知道 ajax 何时完成,我注册了一个函数作为侦听器,当 ajax 完成时将被唤醒。此函数更改 globalVariable 值。我的waitWhileAjaxIsNotComplete()进入一个无限循环,等待 glovalVariable 值改变。当它发生变化时(听者醒来后),我可以结束函数并继续使用doSomthingElse()函数。

你可以看到更多关于实现的信息:QTP Web extensibilty toolkit and ajax

4

1 回答 1

0

我不记得几个月前我使用了什么,因为我不再使用 Jscript(没有足够的时间)......但我目前正在查看我的程序,看看我是否仍然保存了脚本。几个月前我做了同样的事情。

一旦我找到它,我会发布代码......


对于那个很抱歉。我似乎找不到代码片段。我一定是把它删掉了……不过我很典型。

因此,在找到更好的解决方案之前,我唯一能想到的就是将您的代码输入无限循环,然后简单地中断;一旦 GlobalVariable 返回 true,就退出它。

我希望这有帮助。我会一直坚持下去,直到找到片段或想出更好的答案。

于 2009-08-09T15:18:52.960 回答