nextflow中文文档|nextflow js中文教程|解析
安装命令:npm i nextflow
Node.js – NextFlow
一个简单的 Node.js 控制流库,面向 CoffeeScript 开发人员。它也是 JavaScript 友好的。
为什么?
看看最著名的 JavaScript 控制流库:Async.js、Step、Seq。如果您要在 CoffeeScript 中使用这些库,您的代码将变得一团糟。
Async.js / CoffeeScript
async = require'async' asyncseries -> #first function -> #second function
步骤 / CoffeeScript
Step = require'step' Step -> #first function -> #second function
序列/CoffeeScript
Seq = require'seq' Seqseq-> #first function seq-> #second function
哎呀。如果您使用 JavaScript 进行编程,那么所有这些都是非常有用的解决方案。此外,公平地说,他们比 NextFlow 做得更多。但是 NextFlow 用 CoffeeScript 程序看起来要好得多。
关于异步
有人对我对 的批评发表了一些评论async
。理所当然。当我编写 NextFlow 时,我不知道异步的瀑布和对象传递功能。然而,这些方法仍然有其不足之处。我仍然认为 NextFlow 是一个轻量级的库,与 async 的无所不能相比,我也认为 NextFlow 的语法更令人愉快,即使对于 JavaScript 开发也是如此。
安装
npm install nextflow
用法
next()
,依次调用该函数,将参数传递给next()
:
如果您愿意next = require'nextflow' vals = x = 0 next flow = 1: -> valspush1 @next 2: -> valspush2 x = Mathrandom @nextx 3: valspushnum @next 4: -> valspush4 @next 5: -> consolelog vals0#is 1 consolelog vals1#is 2 consolelog vals2#is x consolelog vals3#is 4
通过标签调用函数,也传递参数:
vals = x = 0 next flow = : -> valspush1 @a2 : -> valspush2 x = Mathrandom @a3x : valspushnum @a4 : -> valspush4 @a5 : -> consolelog vals0#is 1 consolelog vals1#is 2 consolelog vals2#is x consolelog vals3#is 4
next()
或调用标签:
调用vals = x = 0y = 0 next flow = : -> valspush1 @a2 : -> valspush2 x = Mathrandom @a3x : valspushnum y = Mathrandom @nexty : valspushnum @a5 : -> consolelog vals0#is 1 consolelog vals1#is 2 consolelog vals2#is x consolelog vals3#is y
错误处理
在一个函数中处理错误。标记它error:
,ERROR:
或ErRoR
。大小写无所谓。
next flow = : consolelog errmessage 1: -> throw 'some error'
通过将它们作为 @next 回调的第一个参数传递来处理错误:
next flow = : consolelog errmessage #ENOENT, open '/tmp/this_file_hopefully_does_not_exist' 1: -> nonExistentFile = '/tmp/this_file_hopefully_does_not_exist' fsreadFile nonExistentFile@next
如果需要,手动调用错误函数
next flow = : consolelog errmessage #"I feel like calling an error." : -> @error"I feel like calling an error."
JavaScript 友好
;
浏览器兼容性
我还没有让这个浏览器兼容,但是你可以通过一个简单的附加next
到window
对象的修改来做到这一点。不过,我提醒您要彻底测试,因为此模块取决于插入对象的顺序的稳定性。如果违反了这一点,您就会遇到问题。据我了解,尽管大多数浏览器都遵守这一点,但这不是 ECMA 标准的一部分。
阅读此讨论以了解更多信息:http :
//code.google.com/p/v8/issues/detail?id=164
执照
麻省理工学院许可
版权所有 (c) 2012 JP Richardson
项目issue数量: 3
项目贡献人员列表: