Skip to content

Instantly share code, notes, and snippets.

@yeerkkiller1
Created November 10, 2013 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save yeerkkiller1/7404421 to your computer and use it in GitHub Desktop.
Save yeerkkiller1/7404421 to your computer and use it in GitHub Desktop.
Watcha going do?
observ := observable.NewObservable(g, 0)
observ.OnChanged(g, func(new observable.Object, old observable.Object) {
if new.(int) < 1 {
return
}
fmt.Println("First set", new, "(", old,") call gets", observ.Get());
})
observ.OnChanged(g, func(new observable.Object, old observable.Object) {
if new.(int) < 1 {
return
}
fmt.Println("Second set", new, "(", old,") call gets", observ.Get());
if new.(int) < 10 {
observ.Set(new.(int) + 1)
}
})
observ.OnChanged(g, func(new observable.Object, old observable.Object) {
if new.(int) < 1 {
return
}
fmt.Println("Third set", new, "(", old,") call gets", observ.Get());
})
observ.Set(1);
@yeerkkiller1
Copy link
Author

Knockout will alternate between One and Two, and then print out Three in reverse.

I print it as the subscriptions were set up (I buffer setting if you set while the callbacks are being called)

@yeerkkiller1
Copy link
Author

So you can have a Status flag, when it is set to DEAD you respawn. BUUUUT you still output a message that you died, even though the announcer subscribed after.

@yeerkkiller1
Copy link
Author

With my code this yields:

First set 1 ( 0 ) call gets 1
Second set 1 ( 0 ) call gets 1
Third set 1 ( 0 ) call gets 1
First set 2 ( 1 ) call gets 2
Second set 2 ( 1 ) call gets 2
Third set 2 ( 1 ) call gets 2
First set 3 ( 2 ) call gets 3
Second set 3 ( 2 ) call gets 3
Third set 3 ( 2 ) call gets 3
First set 4 ( 3 ) call gets 4
Second set 4 ( 3 ) call gets 4
Third set 4 ( 3 ) call gets 4
First set 5 ( 4 ) call gets 5
Second set 5 ( 4 ) call gets 5
Third set 5 ( 4 ) call gets 5
First set 6 ( 5 ) call gets 6
Second set 6 ( 5 ) call gets 6
Third set 6 ( 5 ) call gets 6
First set 7 ( 6 ) call gets 7
Second set 7 ( 6 ) call gets 7
Third set 7 ( 6 ) call gets 7
First set 8 ( 7 ) call gets 8
Second set 8 ( 7 ) call gets 8
Third set 8 ( 7 ) call gets 8
First set 9 ( 8 ) call gets 9
Second set 9 ( 8 ) call gets 9
Third set 9 ( 8 ) call gets 9
First set 10 ( 9 ) call gets 10
Second set 10 ( 9 ) call gets 10
Third set 10 ( 9 ) call gets 10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment