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

      做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
                });
            }
        });
    第二种就是利用函数也是对象这一特点利用函数属性,来做区分符
     
  • 相关阅读:
    深度剖析Byteart Retail案例
    REVIT使用中遇到的各种问题汇总
    常用设计规范
    编程修养
    Linux、Windows静态编译ffmpeg 4.4.1、x264、x265等编解码库的脚本
    程序员的灯下黑:重知识轻技术
    GitHub 公布 2021 Top 10 博文「GitHub 热点速览」
    狠人!标星 3.4 万的项目说删就删,几行代码搞崩数万个开源项目
    重装系统前备份fstab
    Ubuntu系统下制作U盘启动盘
  • 原文地址:https://www.cnblogs.com/yaya666/p/11608632.html
Copyright © 2011-2022 走看看