首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >highland.js:映射函数不按预期工作

highland.js:映射函数不按预期工作
EN

Stack Overflow用户
提问于 2014-03-05 09:15:21
回答 3查看 1.1K关注 0票数 2

学习节点流管理器highland.js的诀窍。

试图做一些非常基本的事情:

代码语言:javascript
复制
_ = require("highland")

doubled = (x)->
    return x*2

_.map(doubled, [1, 2, 3, 4])

没有输出

当我跑的时候

代码语言:javascript
复制
_ = require("highland")

doubled = (x)->
    return x*2

console.log(_.map(doubled, [1, 2, 3, 4]))

我得到以下输出:

代码语言:javascript
复制
{ 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 } }

在我看来就像一条没有任何内容的溪流。

我在这里做错什么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 02:07:37

map将一个流转换为另一个流。您需要使用类似reduceeachtoArray之类的工具来收集结果。

流也有可能被暂停,在这种情况下,它不会产生任何输出,直到您resume它。

票数 4
EN

Stack Overflow用户

发布于 2015-01-10 04:55:53

以下是我如何处理这个问题:

代码语言:javascript
复制
_ = require("highland")

doubled = (x)->
    return x*2

_([1, 2, 3, 4]).map(doubled).map(String).pipe(process.stdout)

票数 1
EN

Stack Overflow用户

发布于 2014-12-17 23:46:22

我自己还在学习Highland.js,但是文档说流是懒评,所以直到调用thunk操作符(如.each().apply().toArray().pipe().resume() )时才会启动它们--它们都被标记为“此函数导致thunk”。在医生那里。

你可能想做这样的事情(抱歉,如果这没有道理,我不知道CoffeeScript)

代码语言:javascript
复制
_ = require("highland")

doubled = (x)->
    return x*2

_.map(doubled, [1, 2, 3, 4]).toArray((array) -> /* Array is available here */ )

在回调函数(在/*Array is available here*/中)中,数组以加倍的值传入,就像在主要例子中那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22193273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档