Articles of highland.js

使用stream减lessnodejs应用程序内存?

这可能是一个新手问题,但我search,找不到满意的答案。 我的node.js应用程序似乎消耗了大量的内存。 每个进程消耗约100MB。 我听说nodejs本身每个进程有大约30MB的内存空间。 该应用程序是一个JSON API,由MongoDB支持。 在一些情况下,一个API请求会导致很多数据库请求,主要是填充子关系。 一个典型的查询是这样的:(1)根据查询条件获取一个objectId数组,并(2)迭代每个objectId,并发出一个查询到数据库来填充数据(一些调用水合)。 代码大量使用async.js。 我试图分析内存使用情况,似乎async.js使用大量的内存,但没有内存泄漏的迹象。 async.js的作者也出来了一个stream库highland.js( http://highlandjs.org/ )。 我是新的nodejsstream,我很好奇,如果这是一个可能的工具来取代async.js? 该网站似乎提到underscore但我主要使用async.js进行asynchronous处理。 谢谢!

摩卡与nodejs断言悬挂/超时断言(错误),而不是错误

我有这种摩卡testing: describe 'sabah', → beforeEach → @sabahStrategy = _.filter(@strats, { name: 'sabah2' })[0] .strat it 'article list should be populated', (done) → @timeout 10000 strat = new @sabahStrategy() articles = strat.getArticleStream('barlas') articles.take(2).toArray( (result)→ _.each(result, (articleList) → // I make the assertions here // assert(false) assert(articleList.length > 1) ) done() ) 问题是,每当我assert(false) ,testing挂起,直到超时,而不是给一个断言错误,为什么? 编辑: 例如,如果我有这两个testing it […]

在高地的循环数据stream

在受到NoFlo.js的启发之后,我刚刚学习了highland.js。 我希望能够recursion地操作stream。 在这个人为的例子中,我将提供一个乘以2的数字,我们过滤结果<= 512。一旦数字相乘,它会被反馈到系统中。 代码我有工作,但如果我拿出pipe道中的多托function,它不处理任何数字。 我怀疑我是不正确地将数据发回到returnPipe。 有没有更好的方式将数据传回系统? 我错过了什么? ### input>–m—>multiplyBy2>—+ | | | | +—<returnPipe<—-+ ### H = require('highland') input = H([1]) returnPipe = H.pipeline( H.doto((v)->console.log(v)) ) H.merge([input,returnPipe]) .map((v)-> return v * 2) .filter((v)-> return v <= 512) .pipe(returnPipe)