做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
});
}
});
第二种就是利用函数也是对象这一特点利用函数属性,来做区分符