aardio官方社区

 找回密码
 注册会员

!connect_header_login!

只需一步,快速开始

搜索
查看: 6393|回复: 0

设计了个待执行函数队列,特殊情况下很有用

[复制链接]

35

主题

66

帖子

390

积分

新手入门

积分
390
发表于 2018-4-16 16:28:36 | 显示全部楼层 |阅读模式
供比较特殊的情况下使用的.

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="aardio form";right=378;bottom=205)
  4. winform.add(
  5. button2={cls="button";text="添加待执行函数到队列";left=84;top=51;right=295;bottom=88;z=1};
  6. button3={cls="button";text="开启时钟逐个执行队列里的函数";left=84;top=95;right=294;bottom=132;z=2}
  7. )
  8. /*}}*/

  9. import console;

  10. //设计一个table,用时钟定时检测逐个函数执行,函数名直接存进去,用的时候后面加括号
  11. var 待执行函数队列 = {}

  12. var jiafa = function(a,b){
  13.         console.log("加法结果:",a+b);
  14. }

  15. winform.button2.oncommand = function(id,event){
  16.    
  17.     //var tab = {fun=jiafa;a=1;b=2;}
  18.         table.push(待执行函数队列,{fun=jiafa;a=1;b=2;})
  19.         table.push(待执行函数队列,{fun=jiafa;a=1;b=3;})
  20.         table.push(待执行函数队列,{fun=jiafa;a=1;b=4;})
  21.         table.push(待执行函数队列,{fun=jiafa;a=1;b=5;})
  22.        
  23.         console.dumpJson(待执行函数队列)
  24.        
  25.         //待执行函数队列[1].fun(待执行函数队列[1].a,待执行函数队列[1].b)
  26. }

  27. import win.timer
  28. var timer = win.timer( winform );
  29. timer.setInterval(2000)
  30. timer.onTimer = function(hwnd,msg,id,tick){
  31.    
  32.     //console.log("任务队列里待执行函数个数:",table.count(待执行函数队列));
  33.    
  34.     if(table.count(待执行函数队列)>=1){
  35.         
  36.         //函数名后面加括号执行
  37.             待执行函数队列[1].fun(待执行函数队列[1].a,待执行函数队列[1].b)
  38.            
  39.             //执行完就从队列中删除掉,避免重复执行
  40.         table.remove(待执行函数队列,1)
  41.     }
  42. }

  43. winform.button3.oncommand = function(id,event){
  44.         timer.enable();
  45. }

  46. winform.show()
  47. win.loopMessage();
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2021-6-19 08:30 , Processed in 0.049230 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表