这在 Observable TC-39 提案中意味着什么?
What does this mean in the Observable TC-39 proposal?
在 TC-39 Observable API proposal 我看到:
Compositional: Observables can be composed with higher-order combinators.
组合子是一种函数,可用于将两个(或更多?)逻辑片段组合成单个更有用的结构。
那么上面的引述在 observables 的上下文中意味着什么?
组合器,在 Observable 的上下文中,指的是允许您将一种 Observable 转换为另一种的函数(通常附加到 Observable.prototype
,在我见过的实现中)。提案中有一个很好的例子:
// Return an observable of special key down commands
function commandKeys(element) {
let keyCommands = { "38": "up", "40": "down" };
return listen(element, "keydown")
.filter(event => event.keyCode in keyCommands)
.map(event => keyCommands[event.keyCode])
}
在此示例中,filter
和 map
是组合子 - 它们的工作方式与 Array.prototype
上的同名函数类似。需要注意的重要一点是,与数组函数类似,它们 总是 return 一个新的 Observable - 它们不会改变现有的。这很有用,因为这意味着如果需要,可以将更多的组合器链接到 commandKeys
的结果。
在 TC-39 Observable API proposal 我看到:
Compositional: Observables can be composed with higher-order combinators.
组合子是一种函数,可用于将两个(或更多?)逻辑片段组合成单个更有用的结构。
那么上面的引述在 observables 的上下文中意味着什么?
组合器,在 Observable 的上下文中,指的是允许您将一种 Observable 转换为另一种的函数(通常附加到 Observable.prototype
,在我见过的实现中)。提案中有一个很好的例子:
// Return an observable of special key down commands
function commandKeys(element) {
let keyCommands = { "38": "up", "40": "down" };
return listen(element, "keydown")
.filter(event => event.keyCode in keyCommands)
.map(event => keyCommands[event.keyCode])
}
在此示例中,filter
和 map
是组合子 - 它们的工作方式与 Array.prototype
上的同名函数类似。需要注意的重要一点是,与数组函数类似,它们 总是 return 一个新的 Observable - 它们不会改变现有的。这很有用,因为这意味着如果需要,可以将更多的组合器链接到 commandKeys
的结果。