不用开发工具,云开发动态激活关闭触发器。
发布于 1 年前 作者 oyi 1252 次浏览 来自 分享

一、业务场景如图:

当关闭定时器时,云开发自动删除定时器,云函数停止按时执行;

二、小程序端代码

  onTriggerSwitchChanged: function (e) {
    wx.cloud.callFunction({
      name: 'timer',
      data: {
        action: e.detail.value ? 'on' : 'off' //打开和关闭定时器
      }
    })
  },

三、云函数timer代码

代码直接复制可用。

const CloudBase = require('[@cloudbase](/user/cloudbase)/manager-node')
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })

exports.main = async (event, context) => {
    if (event.action == 'on') return await triggerOn() //打开定时器
    if (event.action == 'off') return await triggerOff()
    await onTrigger() //定时器触发时处理流程
}
async function triggerOn() {
    const tcb = new CloudBase({ envId: cloud.getWXContext().ENV })
    return await tcb.functions.createFunctionTriggers("timer", [
        {
            "name": "myTrigger",
            "type": "timer",
            "config": "0 */10 * * * * *"//每10分钟触发一次
        }
    ])
}
async function triggerOff() {
    const tcb = new CloudBase({ envId: cloud.getWXContext().ENV })
    return await tcb.functions.deleteFunctionTrigger("timer", 'myTrigger')
}

async function onTrigger() {}

参考文档:https://docs.cloudbase.net/api-reference/manager/node/introduction

四、结束。

1 回复

同一个云函数,不同的 trigger name ,不同 config 可以增加多次吗?

回到顶部