Go语言的Reactive扩展RxGo.zip

时间:2022-08-05 21:56:52
【文件属性】:

文件名称:Go语言的Reactive扩展RxGo.zip

文件大小:33KB

文件格式:ZIP

更新时间:2022-08-05 21:56:52

开源项目

RxGo 是 Go 语言的 Reactive 扩展。安装go get -u github.com/jochasinga/rxgo用法watcher := observer.Observer{     // Register a handler function for every next available item.     NextHandler: func(item interface{}) {         fmt.Printf("Processing: %v\n", item)     },     // Register a handler for any emitted error.     ErrHandler: func(err error) {         fmt.Printf("Encountered error: %v\n", err)     },     // Register a handler when a stream is completed.     DoneHandler: func() {         fmt.Println("Done!")     }, } it, _ := iterable.New([]interface{}{1, 2, 3, 4, errors.New("bang"), 5}) source := observable.From(it) sub := source.Subscribe(watcher) // wait for the async operation <-sub以上将:将切片中每个数字的格式字符串 print 为4。print 错误“bang”重要的是要记住,只有一个 OnError 或 OnDone 可以在 stream 中调用。 如果 stream 中有错误,处理停止,OnDone 将永远不会被调用,反之亦然。概念是将所有“side effects”分组到这些处理程序中,让一个 Observer 或任何 EventHandler 处理它们。package main import (     "fmt"     "time"     "github.com/jochasinga/rx"     "github.com/jochasinga/rx/handlers" ) func main() {     score := 9     onNext := handlers.NextFunc(func(item interface{}) {         if num, ok := item.(int); ok {             score  = num         }     })     onDone := handlers.DoneFunc(func() {         score *= 2     })     watcher := observer.New(onNext, onDone)     // Create an `Observable` from a single item and subscribe to the observer.     sub := observable.Just(1).Subscribe(watcher)     <-sub     fmt.Println(score) // 20 } 标签:RxGo


【文件预览】:
RxGo-master
----connectable()
--------connectable_test.go(9KB)
--------connectable.go(7KB)
----examples()
--------flatmap()
--------scroll()
--------reactive_sum()
----CONTRIBUTING.md(3KB)
----.travis.yml(495B)
----LICENSE(1KB)
----README.md(7KB)
----iterable()
--------iterable.go(1KB)
--------iterable_test.go(2KB)
----eventhandler.go(131B)
----observer()
--------observer.go(2KB)
--------observer_test.go(974B)
--------observer_mock.go(951B)
----errors()
--------errors_test.go(1KB)
--------errors.go(786B)
--------errorcode_string.go(473B)
----handlers()
--------handlers_test.go(2KB)
--------handlers.go(764B)
----subscription()
--------subscription_test.go(607B)
--------subscription.go(767B)
----.gitignore(361B)
----observable()
--------create.go(1KB)
--------create_test.go(3KB)
--------flatmap_test.go(3KB)
--------options.go(690B)
--------flatmap.go(2KB)
--------observable.go(9KB)
--------observable_test.go(19KB)
--------options_test.go(272B)
----fx()
--------fx.go(835B)
----iterator.go(114B)

网友评论