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
                });
            }
        });
    第二种就是利用函数也是对象这一特点利用函数属性,来做区分符
     
  • 相关阅读:
    20200601:百万级int数据量的一个array求和。
    20200602:千万级数据量的list找一个数据。
    20200531:假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如何将它们全部找出来?
    20200530:主从数据库不一致如何解决?
    [USACO06DEC]Milk Patterns G
    [HAOI2016]找相同字符
    [AHOI2013]差异
    [SCOI2012]喵星球上的点名
    [APIO2014]回文串
    [TJOI2015]弦论
  • 原文地址:https://www.cnblogs.com/yaya666/p/11608632.html
Copyright © 2011-2022 走看看