评论

不用开发工具,云开发动态激活关闭触发器。

用代码操控云开发触发器的动态开启和关闭。

一、业务场景如图:

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


二、小程序端代码

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

三、云函数timer代码

代码直接复制可用。

const CloudBase = require('@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

四、结束。

最后一次编辑于  2023-03-03  
点赞 1
收藏
评论

1 个评论

  • 徐XX
    徐XX
    2023-03-03

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

    2023-03-03
    赞同
    回复
登录 后发表内容