云环境中setTimeout调用为什么没有在指定时间执行?
发布于 5 年前 作者 ahu 4090 次浏览 来自 问答

在某个云函数,写了如下代码:

console.log("timer start")
setTimeout(function () {
  console.log("timer end")
  const tdb = cloud.database()
  tdb.collection('test').add({
    data: {
      time: db.serverDate()
    }
  }).then(res => {
    if (res.errMsg.indexOf('ok') == -1) {
      console.log(res)
      console.log("add test failed.")
      return null
    }
  })
}, 10000) 

期望10秒后执行添加记录到test数据库的操作,但是10秒后代码并没有执行。

等到20秒后某个来自小程序端的请求来了,此时添加test记录的那段代码就执行了。

这是什么原因呢?

2 回复

这应该用触发器吧,云函数不会自动执行,除非使用触发器或者从小程序端、其它云函数调用发起。

10秒不到,云函数就运行到结尾了,一到结尾就会关闭进程的,不会等你的timeout.

回到顶部