再次求助

请教:标题的这个函数在描述中是“-- 打开GPS后,如果在GPS开启最大时长内,定位成功,如果有回调函数,会调用回调函数,然后自动关闭此“GPS应用”,但在实际测试中如下图:

attachments-2018-09-KFqjQSdP5b9b7849c61cd.png程序一进入gps.open()就执行了callback函数,后才开始数秒。并且,多打印的log中也看到进入回调函数时gps并没有定位成功。如果,按照注释描述的,应该是在给定时间内gps定位成功后才执行回调函数。实际从打印的log上看,是先执行了回调函数再开始数秒。
谢谢!!

这是部份代码截图:
attachments-2018-09-w5hLsoqL5b9b8ce75c38b.png

attachments-2018-09-GHYPbPNp5b9b8cf8aae39.png

请先 登录 后评论

1 个回答

晨旭 - 菜鸟

你的代码有很大的问题

首先看这一行:gps.open(2,{巴拉巴拉...,cb=TrackSerMsg(quenemsg)}

这里你写了TrackSerMsg(quenemsg),你传递的是这个函数的返回值(会运行然后返回该函数return的东西),不是传递了这个函数类型的值(function)

由于你传递了这个TrackSerMsg(quenemsg),所以会先运行这个函数,然后返回一个返回值,而这个返回值应该并不是function类型的量,导致cb=nil(如果你那个函数没return东西的话)


这会导致的直接结果就是:gps.open之前就运行了TrackSerMsg(quenemsg),传入值是nil,返回值是nil,最终cb=nil,函数判断你的参数里没给回调函数,导致倒计时完了也不会调用这个函数


解决办法:改成cb=TrackSerMsg


建议再好好学习一下编程逻辑

请先 登录 后评论
  • 1 关注
  • 0 收藏,2000 浏览
  • 罗之 提出于 2018-09-15 12:37

相似问题