【问题标题】:highland.js: map function not working as intendedhighland.js:地图功能未按预期工作
【发布时间】:2014-03-05 09:15:21
【问题描述】:

了解节点流管理器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 } }

在我看来,它就像一个没有任何内容的流。

我在这里做错了什么?

【问题讨论】:

    标签: javascript node.js stream highland.js


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      以下是我的处理方式:

      _ = require("highland")
      
      doubled = (x)->
          return x*2
      
      _([1, 2, 3, 4]).map(doubled).map(String).pipe(process.stdout)

      【讨论】:

        【解决方案3】:

        我自己还在学习 Highland.js,但文档说流是 lazily-evaluated,所以直到调用 thunking 运算符(例如 .each()、@ 987654324@、.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*/),数组以双倍值传入,就像在the main example 中一样。

        【讨论】:

          猜你喜欢
          • 2013-08-29
          • 2020-04-28
          • 2021-08-27
          • 1970-01-01
          • 2012-10-07
          • 2014-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多