例如,我想1分钟后执行一个操作,在小程序端可以使用setTimeout(fn,60000)调用实现,因为小程序端的运行环境一直都在。
可是在云函数环境,用户一个访问过来,接受用户访问的云函数实例运行最多20秒就结束了。没有了运行环境,在云函数中调用setTimeout(fn, 60000)就无法保证1分钟后执行函数fn
可以考虑使用定时触发器实现,建立一个每秒执行的定时器。接受用户访问的云函数中,可以写入数据库,设置60秒超时信息。定时器每秒把超时数字减一,超时信息等于0时意味着60秒定时到了。
但是上面的实现方案开销太大,每秒钟都要操作数据库。
有没有更好的办法?
定时触发器https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/triggers.html
看看这个是否满足你的需求
写成两个云函数吧,第一个执行完后返回到小程序端,60秒后执行第二个云函数,即执行timeout中的fn.
wx.cloud.callFunction('fn1').then({
setTimeout(function(){wx.cloud.callFunction('fn2')},60000)
}
)
貌似无法实现