Go 语言的 Reactive 扩展 RxGo

码农软件 · 软件分类 · 常用工具包 · 2019-08-13 23:42:32

软件介绍

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
}

本文地址:https://www.codercto.com/soft/d/12315.html

JavaScript实战

JavaScript实战

Frank W. Zammetti / 张皛珏 / 人民邮电出版社 / 2009-8 / 59.00元

随着Ajax的兴起,JavaScript迅速地从改进网站的配角晋升为开发专业级高质量应用的主角,成为了Web开发中不可缺少的一员。 本书主要通过10个具体项目,包括构建可扩展的JavaScript库、使用GUI窗口小部件框架、开发支持拖放的购物车和编写JavaScript游戏等,讲述JavaScript最佳实践、Ajax技术,以及一些流行的JavaScript库,如Rico、Dojo、scr......一起来看看 《JavaScript实战》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具