云函数环境如何实现类似setTimeout的超时定时器?
发布于 6 年前 作者 wei51 14710 次浏览 来自 官方Issues

例如,我想1分钟后执行一个操作,在小程序端可以使用setTimeout(fn,60000)调用实现,因为小程序端的运行环境一直都在。

可是在云函数环境,用户一个访问过来,接受用户访问的云函数实例运行最多20秒就结束了。没有了运行环境,在云函数中调用setTimeout(fn, 60000)就无法保证1分钟后执行函数fn

可以考虑使用定时触发器实现,建立一个每秒执行的定时器。接受用户访问的云函数中,可以写入数据库,设置60秒超时信息。定时器每秒把超时数字减一,超时信息等于0时意味着60秒定时到了。

但是上面的实现方案开销太大,每秒钟都要操作数据库。

有没有更好的办法?

回到顶部