一、业务场景如图:
当关闭定时器时,云开发自动删除定时器,云函数停止按时执行;
二、小程序端代码
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
四、结束。
同一个云函数,不同的 trigger name ,不同 config 可以增加多次吗?