Golang中的nodejs setTimeout是什么?

我目前正在学习,并且我错过了来自golang的Nodejs的setTimeout 。 我还没读过很多,我想知道是否可以像间隔或回送一样执行相同的操作。

有没有一种方法可以将它从节点写入golang? 我听说golang处理并发性很好,这可能是一些goroutines或其他?

 //Nodejs function main() { //Do something setTimeout(main, 3000) console.log('Server is listening to 1337') } 

先谢谢你!

 //Go version func main() { for t := range time.Tick(3*time.Second) { fmt.Printf("working %s \n", t) } //basically this will not execute.. fmt.Printf("will be called 1st") } 

最接近的等价物是时间time.AfterFunc函数:

 import "time" ... time.AfterFunc(3*time.Second, somefunction) 

这将产生一个新的goroutine,并在指定的时间后运行给定的函数。 软件包中还有其他相关的function可能是有用的:

  • time.After :此版本将返回一个频道,将在给定的时间后发送一个值。 如果您希望在等待一个或多个通道时发生超时,这可以与select语句结合使用。

  • time.Sleep :这个版本将会阻塞,直到定时器到期。 在Go中,编写同步代码更为常见,并且依靠调度程序切换到其他goroutine,所以有时候简单的阻塞是最好的解决scheme。

也有time.Tickertime.Tickertypes,可用于轻微的情况下,你可能需要取消定时器。

另一个解决scheme可能是实施一个

立即调用的函数expression式(IIFE)function如下:

 go func() { time.Sleep(time.Second * 3) // your code here }()