代码拉取完成,页面将自动刷新
package scheduler
type (
baseTaskWrapper struct {
handle TimerHandler
exec TimerFunc
owner *goCornTimer
running bool
}
// runLimitsTask 限制次数类函数包装,
runLimitsWrapper struct {
*baseTaskWrapper
count int
maxCount int
}
// abortTask 在函数抛出错误时候中断定时器执行
abortWrapper struct {
*baseTaskWrapper
}
)
func (wp *runLimitsWrapper) runTask() {
defer func() {
if err := recover(); err != nil {
wp.cancel()
}
}()
// 非可执行状态
if !wp.running {
return
}
// 执行指令
err := wp.exec()
if err != nil {
wp.cancel()
}
// 计算执行次数,达到上限则执行,也停止业务
wp.count++
if wp.count >= wp.maxCount {
wp.cancel()
return
}
}
func (wp *runLimitsWrapper) cancel() {
// 设置状态不可执行
wp.running = false
// 通知调度器删除
_ = wp.owner.CancelTimer(wp.handle)
}
func (wp *abortWrapper) runTask() {
defer func() {
if err := recover(); err != nil {
wp.cancel()
}
}()
// 非可执行状态
if !wp.running {
return
}
// 执行指令
err := wp.exec()
if err != nil {
wp.cancel()
}
}
func (wp *abortWrapper) cancel() {
// 设置状态不可执行
wp.running = false
// 通知调度器删除
_ = wp.owner.CancelTimer(wp.handle)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。