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
                });
            }
        });
    第二种就是利用函数也是对象这一特点利用函数属性,来做区分符
     
  • 相关阅读:
    ASP.NET Page 那点事
    .Net项目分层与文件夹结构大全(最佳架子奖,吐槽奖,阴沟翻船奖揭晓)
    bash_profile和.bashrc的区别
    limits.conf生效问题
    有关snprintf返回值
    snprintf和strncpy对比
    Hadoop技术论坛
    Ubuntu系统微调
    interpreter和state模式的区别
    ANTLR实现的SQL解析器 OQL
  • 原文地址:https://www.cnblogs.com/yaya666/p/11608632.html
Copyright © 2011-2022 走看看