Mithril API

stream()

描述

流是一种可以有关联反应的数据结构,类似于表格应用中的单元格。

例如,在表格中,如果 A1 = B1 + C1,则修改 B1C1 时,A1 也会被自动修改。

你可以使一个流依赖于其他流,以便更改一个流时可以自动更改其他的流。当你有一个非常耗资源的计算,且希望只在必要的时候执行,而不是每次重绘时都执行,这时流就会派上用场。

Stream 模块并没有包含在 Mithril 的核心发行版中。要引入 Stream 模块,请使用:

var Stream = require("mithril/stream")

如果你没有使用模块化工具对文件进行打包,也可以直接直接引用该模块:

<script src="https://unpkg.com/mithril-stream"></script>

当直接通过 <script> 标签引入文件时,stream 库会暴露到 window.m.stream。如果你想把 stream 库和 Mithril 一起使用,则需要在引入 mithril-stream 之前先引入 Mithril,因为 Mithril 会把 window.m 直接覆盖掉。

签名

创建流

stream = Stream(value)
参数 类型 是否必须 描述
value any 如果存在该值,则流的值会被设置为该值。
返回 Stream 返回一个 Stream

静态成员

Stream.combine

创建计算流,如果其上面的流发生了更新,则它也会更新。参见组合流

stream = Stream.combine(combiner, streams)
参数 类型 是否必须 描述
combiner (Stream..., Array) -> any 详见 combiner 参数
streams Array<Stream> 要组合的流的列表
返回 Stream 返回一个流
combiner

指定计算流的值的生成方式。详见组合流

any = combiner(streams..., changed)
参数 类型 是否必须 描述
streams... 多个 Streams 0 个或多个流,会传入到 stream.combine 的第二个参数中
changed Array<Stream> 受更新影响的流列表
返回 any 返回一个计算值

Stream.merge

创建一个流,它的值是一组流的值组成的数组。

stream = Stream.merge(streams)
参数 类型 是否必须 描述
streams Array<Stream> 一个流组成的数组
返回 Stream 返回一个流,它的值是一组流的值组成的数组。

Stream.scan

创建一个新的流,其值是

stream = Stream.scan(fn, accumulator, stream)
参数 类型 是否必须 描述
fn (accumulator, value) -> result 一个函数,使用累加器和值作为参数,并返回新的累加器的值
accumulator any 累加器的起始值
stream Stream
返回 Stream 返回包含这些结果的新的流

Stream.scanMerge

Stream.HALT

Stream["fantasy-land/of"]

Instance members

stream.map

stream.end

stream["fantasy-land/of"]

stream["fantasy-land/map"]

stream["fantasy-land/ap"]

基本用法