`

双击惹的祸-如何避免后台功能重复执行

 
阅读更多
<!--StartFragment -->
双击惹的祸-如何避免后台功能重复执行

典型场景:


 
    点击“保存”后,后台将数据保存到数据库中。经常发现数据保存不正常,或者保存两条,或者将原有数据删除。
经过反复测试,原来是双击惹的祸。
分析:
    双击有两种情况,一种是用户点击“保存”按钮是双击鼠标,这是比较常见的情况;另一种是单击保存后,后台

处理较慢,用户着急再次单击。无论哪种情况都会造成后台功能执行两次,后果依据后台处理功能不同而不一样。
解决:
    单击后因后台处理较慢再次单击,这种情况比较好避免,前端单击处理事件中设置保存按钮不可用即可。但即便

如此也避免不了双击造成的执行两次后台功能,因为双击会触发两次单击事件(浏览器不同可能处理方式不同,但
IE是这种机制)。因此,解决双击问题的思路是在第一次进入单击事件中尽快设置互斥标志,第二次进入时检查标志
避免重复进入真正的处理代码。办法如下:


 

需要注意的是,如果逻辑上需要允许用户再次单击保存(比如保存过程中出错了),那么应该找一个时机执行:
setMenuItemEnabled(menu, 'save', true).
这个时机一般应该是后台生理完毕之后,回到前台时执行。

例子中简单地在其它按钮事件中执行:


 


  • 大小: 34.3 KB
  • 大小: 133 KB
  • 大小: 36.6 KB
分享到:
评论

相关推荐

    unix 学习: 各种基本命令的使用

    4. UNIX下如何重复执行历史命令,以及提示完整路径的快捷键 ksh -o vi,可以在.profile文件中加入 ksh -o vi,然后每次在命令行输入前面几个没有重复的字符后,双击esc键。更大的功能是vi编辑中的绝大多数命令都适用...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正EnableMaximize属性不能使Window最大化的BUG,修正了双击标题栏不能最大化的BUG。 -删除Button控件的SystemIcon属性,比如以前这样定义SystemIcon="Close",现在需要这样定义Icon="SystemClose"。 -Window...

    网站猎手2.0(Webhunter)

    可能有重复,你可以在整理时删除重复的网站。 获得的网址可以导出保存,供他用。也可以从外部导入再次使用。 4。扫描验证 获得网址后,就可以载入网址进行扫描验证了。当然你可以点右键进行修改,或去掉不想要的网址...

    网站猎手(黑人工具)

    可能有重复,你可以在整理时删除重复的网站。 获得的网址可以导出保存,供他用。也可以从外部导入再次使用。 4。扫描验证 获得网址后,就可以载入网址进行扫描验证了。当然你可以点右键进行修改,或去掉不想要的网址...

    网站猎手2.0

    可能有重复,你可以在整理时删除重复的网站。 获得的网址可以导出保存,供他用。也可以从外部导入再次使用。 4。扫描验证 获得网址后,就可以载入网址进行扫描验证了。当然你可以点右键进行修改,或去掉不想要的网址...

    java windows 计时工具

    退出 退出当前程序,所有计时任务将不被执行。 注:1.21版之后可以设置“禁止退出”,启用了“禁止退出”设置该操作将无效。 结束 关闭 即时,关闭计算机或操作系统。 重启 即时,重启计算机操作系统。 注销 ...

    人力资源管理软件(完全免费)

    人力资源管理软件功能介绍 本人力资源软件包含人事档案管理 本人力资源软件包含工资管理 本人力资源软件包含考勤管理 本人力资源软件包含绩效管理 本人力资源软件包含用户管理 本人力资源软件软件界面美观,...

    ExtAspNet_v2.3.2_dll

    -修正EnableMaximize属性不能使Window最大化的BUG,修正了双击标题栏不能最大化的BUG。 -删除Button控件的SystemIcon属性,比如以前这样定义SystemIcon="Close",现在需要这样定义Icon="SystemClose"。 -Window...

    驱动精灵(可以备份驱动,也可以升级驱动)

    11、修正软件缩小至任务栏通知区域时,双击无法打开主窗体问题 12、对驱动更新说明位置文字进行微调,软件更加美观 ============================================================ 2.1.2.0527 版(2009 B2版) What...

    MAPGIS地质制图工具

    双击鼠标中键 复原窗口功能 双击鼠标右键 取消所有操作,回到初始状态 (以上快捷键不区分大小写),其它快捷键与mapgis相同。 在编辑视图中,如果状态为准备状态,按住Ctrl右击,将弹出常用图元编辑快捷菜单;按住...

    易语言 茶凉专用模块

    参数 是否后台, 逻辑型, 可空, 默认为假:可见到的颜色点 真:后台窗口内颜色点 .参数 色深, 整数型, 可空, 所截取的图片位深度,默认为16位(8,16,24,32) .子程序 超级延迟, , 公开, 无资源占用的延时(无返回值) .参数...

    vc++ 开发实例源码包

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! 如题。详细见源码。 GMem 内存管理单元源码。GMem.cpp...

    asp.net知识库

    完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎 正式发布表达式计算引擎WfcExp V0.9(附源码) 运算...

    vc++ 应用源码包_1

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_2

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_6

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_5

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    vc++ 应用源码包_3

    这个例子就是查询任何可执行文件的版本信息并且 C++builder 和 VC 都通用,只需要把 AnsiString 替换成 CString 就行了。 gh0st v3.6 源码 - 可下断点调试! GMem 内存管理单元源码。GMem.cpp和GMem.h是内存管理...

    易语言辅助模块

    参数 标识, 文本型, 可空, 如果有多个程序用到禁止重复运行功能,建意给每个程序定个不同的标识.任意文本 .参数 窗口句柄, 整数型, 可空, 如果参数被省略,不还原最小化的窗口 .子程序 _卸载热键, 逻辑型, 公开, ...

Global site tag (gtag.js) - Google Analytics