Lua函数返回Nil

Lua函数返回Nil,lua,grand-theft-auto,Lua,Grand Theft Auto,我对返回表的函数有问题。该表中填充了来自DB行(在另一个函数上)的数据,然后该函数将其发送到客户端进行显示。我初始化了表并填充了正确返回的随机数据。该函数正确地打印getSData中的所有项,但是当返回时,它不会返回任何内容,甚至会在最后一个打印函数中转储整个表 函数getBourse() 本地结果={ { libelle=“任意随机项目名称”, 价格=830728, 差=0.0 } } vRP.getSData({“vRP:economy_trs”,函数(数据) 本地经济_trs=json.d

我对返回表的函数有问题。该表中填充了来自DB行(在另一个函数上)的数据,然后该函数将其发送到客户端进行显示。我初始化了表并填充了正确返回的随机数据。该函数正确地打印getSData中的所有项,但是当返回时,它不会返回任何内容,甚至会在最后一个打印函数中转储整个表

函数getBourse() 本地结果={ { libelle=“任意随机项目名称”, 价格=830728, 差=0.0 } } vRP.getSData({“vRP:economy_trs”,函数(数据) 本地经济_trs=json.decode(数据)或{} 对于k,v成对(经济型)do 本地htr=经济体 对于g,i成对(htr)do 如果i~=nil或g~=nil,那么 如果g~=“时间戳”,则 打印(“项目名称”。.tostring(g)…金额”。.tostring(i.out\u money)) 表.insert(结果,{libelle=tostring(g),price=tostring(i.out\u money),差=0.0}) 结束 结束 结束 结束 打印(“测试”,转储(结果)) 结束}) 返回结果 结束 getSData就是这样工作的:

函数vRP.getSData(键,cbr)
本地任务=任务(cbr,{'})
query(“vRP/get_srvdata”,{key=key},函数(行,受影响)
如果#行数>0,则
任务({rows[1].dvalue})
其他的
任务()
结束
(完)
结束
我遇到的问题是getSData部分获取所有内容的速度很慢,并且函数已经返回。希望我能解释清楚我想做什么,因为英语不是我的主要语言

我的问题的解决方案是:

函数getBourse(cbr)
本地任务=任务(cbr,{'})
局部结果={}
vRP.getSData({“vRP:economy_trs”,函数(数据)
本地经济_trs=json.decode(数据)或{}
对于k,v成对(经济型)do
本地htr=经济体
对于g,i成对(htr)do
如果i~=nil或g~=nil,那么
如果g~=“时间戳”,则
表.insert(结果,{libelle=tostring(g),price=tonumber(i.out\u money),差=0.0})
结束
结束
结束
结束
任务({result})
结束})
结束

那么,
setSData
是一种异步函数吗?它的回报是什么?它有回调参数吗?我用getSData的工作原理编辑了我的问题。它有一个回调参数,因此您的函数在不等待异步函数完成的情况下返回,并且实际数据将传递给回调函数。我不知道是否有一种方法可以在函数内部等待协同程序完成;这就是你需要的。我找不到它。如果没有,则必须使其余的设计基于异步/协同路由。谢谢,为函数添加了回调,现在工作正常!