Created
          December 2, 2012 22:45 
        
      - 
            
      
        
      
    Star
      
          
          (134)
      
  
You must be signed in to star a gist 
- 
              
      
        
      
    Fork
      
          
          (31)
      
  
You must be signed in to fork a gist 
- 
      
- 
        Save ryanfitz/4191392 to your computer and use it in GitHub Desktop. 
    two ways to call a function every 2 seconds
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | package main | |
| import ( | |
| "fmt" | |
| "time" | |
| ) | |
| // Suggestions from golang-nuts | |
| // http://play.golang.org/p/Ctg3_AQisl | |
| func doEvery(d time.Duration, f func(time.Time)) { | |
| for x := range time.Tick(d) { | |
| f(x) | |
| } | |
| } | |
| func helloworld(t time.Time) { | |
| fmt.Printf("%v: Hello, World!\n", t) | |
| } | |
| func main() { | |
| doEvery(20*time.Millisecond, helloworld) | |
| } | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | package main | |
| import ( | |
| "fmt" | |
| "time" | |
| "net/http" | |
| ) | |
| func doSomething(s string) { | |
| fmt.Println("doing something", s) | |
| } | |
| func startPolling1() { | |
| for { | |
| time.Sleep(2 * time.Second) | |
| go doSomething("from polling 1") | |
| } | |
| } | |
| func startPolling2() { | |
| for { | |
| <-time.After(2 * time.Second) | |
| go doSomething("from polling 2") | |
| } | |
| } | |
| func handler(w http.ResponseWriter, r *http.Request) { | |
| fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) | |
| } | |
| func main() { | |
| go startPolling1() | |
| go startPolling2() | |
| http.HandleFunc("/", handler) | |
| http.ListenAndServe(":8080", nil) | |
| } | 
ty, still good solution for 2020, haha
How to stop the polling?
@IgorDePaula take a look at this playground:
https://play.golang.org/p/l_9R0d71iIJ
I've altered the time.Tick solution to use a select together with Context.
@q42jaap Thank you
thanks <3
Thank you !
Nice
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
            
doEvery(20*time.Millisecond, helloworld)calls
helloworldevery 0.02 seconds, not every 2 seconds