为何setTimeout不执行?
这个问题我就遇到了,当时没注意到。直接看错误代码
myFun函数代码
function myFun(){
var state = true;
var timeId = setTimeout(function(){
state = false;
}, 3233);
while(!myClick(wxAutoConfigObj.curGroupName)&&state){
scrollForward();
sleep(300);
}
clearTimeout(timeId)
return state;
}
解决方法
最后查看文档发现原因如下:
需要注意的是,这些定时器仍然是单线程的。如果脚本主体有耗时操作或死循环,则设定的定时器不能被及时执行
这里记录有:Auto.js学习笔记8:常用且重要的一些API_PYB3的博客-CSDN博客
修改代码如下
function myFun(){
let state = true;
let timeId;
var thread = threads.start(function(){
timeId = setTimeout(function(){
state = false;
}, 6600);
});
while(!myClick(wxAutoConfigObj.curGroupName)&&state){
scrollForward();
sleep(300);
}
//停止线程执行
thread.interrupt();
clearTimeout(timeId)
if(state){
toast('进入群聊界面:' + wxAutoConfigObj.curGroupName);
}
return state;
}
总结
加入一个子线程就可以解决问题了。