Lua 异步封装

在lua里面的异步代码主要是通过闭包实现,结合asio,一些简单的封装,方便编写异步代码,比如异步的while,异步的for等

useage:

1--[[ 2* Author: caoshanshan 3* Email: me@dreamyouxi.com 4异步lib 封装 方便快速写异步lua代码 5@see useage 6]] 7 8local t = { } 9 10-- 异步循环调用 直到成功 或者达到深度 11-- cb需要执行的函数 第一个参数是async对象,调用async:_continue() 继续执行 12-- auto_run run auto ? if not you should call it manual 13-- max run depth ,just for avoid run forever 14function t.async_while_true(cb, auto_run, MAX_DEPTH) 15 local depth = 0; 16 if auto_run == nil then 17 auto_run = true; 18 end 19 MAX_DEPTH = MAX_DEPTH or 1000; 20 local obj = { }; 21 obj.run = true; 22 obj.cb = cb; 23 obj._continue = function(self) 24 if self.run and depth < MAX_DEPTH then 25 depth = depth + 1; 26 self:cb(); 27 else 28 -- print(" out of range"); 29 end 30 end 31 obj._break = function(self) 32 self.run = false; 33 end 34 if auto_run then 35 obj:_continue(); 36 end 37 return obj; 38end 39 40 41return t; 42 43 44useage: 45 46 47function t.ttttt(ctx, msg, cb) 48 local redis_key = redis_key.get_uuid_gen(); 49 50 async.async_while_true( function(async) 51 redis.incr(redis_key, function(v) 52 if v and v ~= "" then 53 local ok = uuid_helper.check_is_valid(v); 54 if ok then 55 local uuid = v; 56 cb(uuid); 57 else 58 -- re gen 59 async:_continue(); 60 return; 61 end 62 end 63 end ) 64 end ); 65end
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )