• 利用闭包,在不设置全局变量的情况下,完成再次点击退出功能


      做APP经常会用到的功能就是,第一次点击弹出退出提示,再次点击退出app

    以前常规做法,就是立flag 代码如下

      var ableToOut = null;
        api.addEventListener({
            name: 'keyback'
        }, function(ret, err){
            if(!ableToOut) {
                ableToOut  = { timeout:2500 };
                return api.toast({
                    msg: api.appName+' :再次点击退出应用',
                    duration: 2000,
                    location: 'bottom'
                });
            } else {
                setTimeout(() => {
                    ableToOut = null;
                }, ableToOut.timeout);
                api.closeWidget({
                    silent:true
                });
            }
        });
    通过全局变量,来控制,控制同一监听事件中的不同行为,这里abletoout为设置可退出对象。在可退出对象存在时,即可退出。另外一个常规命令思路,就是flag为true的时候可以出退出。
     
    这里需要添加一个全部变量。对全局造成污染,如果其他部分也需要用flag这种类型的正反判断,则容易出问题。
     
    为了避免变量污染,那么我们可以采用闭包的形式。
        api.addEventListener({
            name: 'keyback'
        }, function(ret, err){
          // 每次点击返回都是一个函数
      let flag = false;
      return 
      if(!flag) {
                 api.toast({
                    msg: api.appName+' :再次点击退出应用',
                    duration: 2000,
                    location: 'bottom'
                });
        flag = true;
         setTimeout(() => {
                     flag= false;
                },2000);
            } else {
                api.closeWidget({
                    silent:true
                });
            }
        });
    第二种就是利用函数也是对象这一特点利用函数属性,来做区分符
     
  • 相关阅读:
    函数调用栈的总结
    Calling convention-调用约定
    函数可以返回结构体的原因
    pthread_join/pthread_exit的用法解析
    线程退出的几种方式和资源回收【线程编程中避免内存泄漏】
    线程状态与tcb、线程的生命周期
    pthread_cleanup_push vs Autorelease VS 异常处理
    thread.h
    Thread Control Block
    线程与cpu
  • 原文地址:https://www.cnblogs.com/yaya666/p/11608632.html
Copyright © 2020-2023  润新知