学习节点流管理器highland.js的诀窍。
试图做一些非常基本的事情:
_ = require("highland")
doubled = (x)->
return x*2
_.map(doubled, [1, 2, 3, 4])没有输出
当我跑的时候
_ = require("highland")
doubled = (x)->
return x*2
console.log(_.map(doubled, [1, 2, 3, 4]))我得到以下输出:
{ domain: null,
_events: { newListener: [Function], removeListener: [Function] },
_maxListeners: 10,
id: '200471',
paused: true,
_incoming: [],
_outgoing: [],
_consumers: [],
_observers: [],
_send_events: false,
_send: [Function],
source:
{ domain: null,
_events: { newListener: [Function], removeListener: [Function] },
_maxListeners: 10,
id: '060326',
paused: true,
_incoming: [ 1, 2, 3, 4, {} ],
_outgoing: [],
_consumers: [ [Circular] ],
_observers: [],
_send_events: false } }在我看来就像一条没有任何内容的溪流。
我在这里做错什么了?
发布于 2014-03-06 02:07:37
map将一个流转换为另一个流。您需要使用类似reduce、each或toArray之类的工具来收集结果。
流也有可能被暂停,在这种情况下,它不会产生任何输出,直到您resume它。
发布于 2015-01-10 04:55:53
以下是我如何处理这个问题:
_ = require("highland")
doubled = (x)->
return x*2
_([1, 2, 3, 4]).map(doubled).map(String).pipe(process.stdout)
发布于 2014-12-17 23:46:22
我自己还在学习Highland.js,但是文档说流是懒评,所以直到调用thunk操作符(如.each()、.apply()、.toArray()、.pipe()或.resume() )时才会启动它们--它们都被标记为“此函数导致thunk”。在医生那里。
你可能想做这样的事情(抱歉,如果这没有道理,我不知道CoffeeScript)
_ = require("highland")
doubled = (x)->
return x*2
_.map(doubled, [1, 2, 3, 4]).toArray((array) -> /* Array is available here */ )在回调函数(在/*Array is available here*/中)中,数组以加倍的值传入,就像在主要例子中那样。
https://stackoverflow.com/questions/22193273
复制相似问题