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
                });
            }
        });
    第二种就是利用函数也是对象这一特点利用函数属性,来做区分符
     
  • 相关阅读:
    CentOS查看和修改MySQL字符集
    centos修改mysql密码或者进入mysql后解决Access denied for user ''@'localhost' to database 'mysql错误
    Centos设置开机启动Apache和Mysql
    centos搭建ftp服务器
    1QT在线帮助文档
    storm学习
    java提高篇之理解java的三大特性——多态
    基于AQS的锁
    反转单链表的几种方法
    Java:基于LinkedList实现栈和队列
  • 原文地址:https://www.cnblogs.com/yaya666/p/11608632.html
Copyright © 2011-2022 走看看