var WScript = new ActiveXObject("WScript.Shell"); WScript.Sleep(100); 我试过了,提示 对象不支持此方法或属性。查帮助发现Sleep()属于WScript对象,但是直接new ActiveXObject("WScript")又提示automation无法创建此对象。
可能前面说得还不是很明白,再补充一下。 要设计的函数是这样的:var value = null;function getValue() { net.send("key"); //异步,返回值通过事件回调函数receive()取得 var value = ??? // 如何取得value return value; }function receive(event) { value = event.data; }用户在调用的时候应该是这样: var val = getValue(); 这个时候val中应该有需要的值。
WScript.Sleep(100);
我试过了,提示 对象不支持此方法或属性。查帮助发现Sleep()属于WScript对象,但是直接new ActiveXObject("WScript")又提示automation无法创建此对象。
至于权限问题可以为客户事先配置好。
net.send("key"); //异步,返回值通过事件回调函数receive()取得
while(value == null) {
// sleep
}
return value;
}function receive(event) {
value = event.data;
}问题:用setTimeout()怎么改写?
如果不能用setTimeout,怎么能够实现sleep?
var value = null;
function getValue() {
net.send("key"); //异步,返回值通过事件回调函数receive()取得
//===========================
setTimeout("receive()",100);//setTimeout第一个参数为你的异步执行函数,第2个参数是多少秒后执行,单位为毫秒
//===========================
}function receive() {
if(xxxx)//xxxx为你检查取返回值对象的状态的,如果状态为已经返回了,则取返回值
{
value=xxxObject.返回值;
}
else//如果状态不是已经返回,则继续使用setTimeout检查状态
{
setTimeout("receive()",100);//setTimeout第一个参数为你的异步执行函数,第2个参数是多少秒后执行,单位为毫秒
}
}
var val = getValue();
这个时候val中应该有需要的值。
setTimeout(function(){
方法(参数);
},100);
要设计的函数是这样的:var value = null;function getValue() {
net.send("key"); //异步,返回值通过事件回调函数receive()取得
var value = ??? // 如何取得value
return value;
}function receive(event) {
value = event.data;
}用户在调用的时候应该是这样:
var val = getValue();
这个时候val中应该有需要的值。
var val=getvalue()时,要么得到返回值 要么就无限等待。