Mr_老冷 发表于 2023-3-12 16:15:25

【EasyClick】脚本停止事件,setStopCallback用法


1.官方例子
function main(){
    setStopCallback(function (){
      logd("fdsafsad 我是停止回调")
   });
    var result = sleep(1000);
    if (result){
      toast("成功");
    } else {
      toast("失败");
    }
}
main();


2.setStopCallback只需在脚本开头执行一次,类似于开了个线程
3.setStopCallback多次调用只会生效最后一个
4.变量交互用全局变量

feijihong 发表于 2023-3-19 22:28:08

那我可否在这个线程里再开一个线程?
我需要监听脚本是否在运行,不在运行的话
执行一个setInterval()周期执行

Mr_老冷 发表于 2023-3-19 22:29:19

feijihong 发表于 2023-3-19 22:28
那我可否在这个线程里再开一个线程?
我需要监听脚本是否在运行,不在运行的话
执行一个setInterval()周 ...

线程在主脚本开

feijihong 发表于 2023-3-19 23:02:48

Mr_老冷 发表于 2023-3-19 22:29
线程在主脚本开

let ui_线程
ui_线程 = setInterval(function () {
    logd("ui.js main()外的ui_线程")
}, 1000);
function main() {
    ui.layout("参数设置", "main.xml");
    setStopCallback(function () {
      logd("main.js已经停止")
      cancelInterval(ui_线程)
      ui_线程 = setInterval(function () {
            logd("监听回调里的ui_线程")
      }, 1000);
      logd("ui_线程:", ui_线程)
    })
}

main();


我是在ui.js里的
必须要在main.js里吗?

我这样预览ui.js,main()外的周期执行一直在跑,即使在监听里取消他,也取消不了.
但还是新建一个周期执行出来

feijihong 发表于 2023-3-19 23:05:56

oh,我明白了
只能在main.js里

我还以为能在ui.js里监听他呢

feijihong 发表于 2023-3-19 23:10:44

那要如何实现咧?
我原本有个周期执行在ui.js里
main.js停了,可否恢复ui.js的这个周期执行咧?

Mr_老冷 发表于 2023-3-20 10:22:27

feijihong 发表于 2023-3-19 23:02
let ui_线程
ui_线程 = setInterval(function () {
    logd("ui.js main()外的ui_线程")


打印一下ui_线程
还有cancelInterval结果
看能否通过返回值做个判断,是否启动新的timer
页: [1]
查看完整版本: 【EasyClick】脚本停止事件,setStopCallback用法