运行不同值的回调函数

问题描述 投票:0回答:0

我从 2 个不同的地方运行了 createCB,并且具有不同的值 一次值为“state” 第二个值为“重新启动”

a := createCB("state",wd)
b := createCB("restarts",wd)

func (c *CollectorWatchDog) createCB(field string, wd *cpwdObj) func() (interface{},[]attribute.KeyValue) {
    var value interface{}
    return func() (interface{},[]attribute.KeyValue) {
        err := c.runWDCommand("cpwd_admin","list")
        if err != nil {
            return nil, nil
        }
        
        if strings.Compare("state",field) == 0 {
            value = wd.state
            fmt.Println("createCB")
            fmt.Println("field")
            fmt.Println(field)
        } else if strings.Compare("restarts",field) == 0 {
            fmt.Println("createCB")
            fmt.Println("restarts")
            fmt.Println(field)
            value = wd.restarts
        } 
        
        labels := wd.getStateRestartLabels()
        return value,labels
    }
}

我将 CB 发送到不同的功能并激活它们,一个接一个,但只有第一个激活了。

这可能是什么原因?

go callback asynccallback
© www.soinside.com 2019 - 2024. All rights reserved.