rundelay

package module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2025 License: Apache-2.0 Imports: 2 Imported by: 1

README

run delay

延迟运行。

  1. 在延迟时间内以最后的一个 Run 的运行时间顺延延迟时间,并保证在并发执行Run时,延迟执行的函数只执行一次
  2. 超过延迟时间之后,只要没有调用过 Close 函数,可以继续调用 Run 函数启动新的延迟
  3. 可以调用 Done 函数获取延迟函数的执行结果

例子

import (
    "time"

    "github.com/admpub/rundelay"
)

func main(){
	delay := time.Second * 2
	dr := rundelay.New(delay, func(v string) error{
        return nil
    })
    defer dr.Close()

    // ...

    dr.Run(`test`) // 可以多次调用使用此代码且并发执行
    // 返回结果为bool值, true代表启动新的延迟 hasRun := dr.Run(`test`)

    // ...

    err := dr.Done() // 获取执行结果
    if err != nil {
        panic(err)
    }
    
}

实例

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Multiple

type Multiple[T any] struct {
	// contains filtered or unexported fields
}

func NewMultiple

func NewMultiple[T any](delay time.Duration, f func(T) error, once ...bool) *Multiple[T]

func (*Multiple[T]) Close

func (m *Multiple[T]) Close(k ...string) (err error)

func (*Multiple[T]) CloseByKey added in v0.0.3

func (m *Multiple[T]) CloseByKey(k ...string)

func (*Multiple[T]) Delete

func (m *Multiple[T]) Delete(k string)

func (*Multiple[T]) Done

func (m *Multiple[T]) Done(k string) error

func (*Multiple[T]) Init

func (m *Multiple[T]) Init(delay time.Duration, f func(T) error)

func (*Multiple[T]) Range

func (m *Multiple[T]) Range(cb func(string, RunDelayer[T])) error

func (*Multiple[T]) Run

func (m *Multiple[T]) Run(k string, v T) bool

type RunDelay

type RunDelay[T any] struct {
	// contains filtered or unexported fields
}

func New

func New[T any](delay time.Duration, f func(T) error) *RunDelay[T]

func (*RunDelay[T]) Close

func (d *RunDelay[T]) Close() error

func (*RunDelay[T]) Done

func (d *RunDelay[T]) Done() error

func (*RunDelay[T]) Init

func (d *RunDelay[T]) Init(delay time.Duration, f func(T) error)

func (*RunDelay[T]) Run

func (d *RunDelay[T]) Run(v T) bool

type RunDelayer

type RunDelayer[T any] interface {
	Init(delay time.Duration, f func(T) error)
	Run(T) bool
	Done() error // 阻塞获取执行结果
	Close() error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL