路由式编程模式,别名:流水线式编程模式
npm i jm-route
const Route = require('jm-route')
const route = new Route(opts=>{}))
-
工序函数 fn
-
路由 Route
-
成品函数
-
加工函数
-
混合函数
执行完成时返回值
function fn1(){
return {name: '鱼哥'}
}
执行完成时不返回值
function fn1(opts){
if(opts.name) return // 可以 return 但不返回任何值
opts.name = '鱼哥'
}
成品函数和加工函数的混合写法
function fn1(opts){
if(opts.name) return {name: opts.name}
opts.name = '鱼哥'
}
function async fn1(opts){
if(opts.name) return {name: opts.name}
opts.name = '鱼哥'
}
一个以上工序函数的组合
接受一个以上函数作为参数
new Route(fn)
new Route([fn1, fn2, ..., fnn]])
new Route(fn1, fn2, ..., fnn)
-
顺序执行 route 中的函数
-
遇到结果返回 promise
-
logging 是否打印日志,默认false
-
benchmark 是否计算耗时,默认false
// 成品函数
const fn = () => {
return {ret: 1}
}
// 创建路由
const route = new Route(fn)
route.logging = true // 打开日志
route.benchmakr = true // 打开耗时计算
// 路由执行
const doc = await route.execute()
// 成品函数
const fn = async () => {
return {ret: 1}
}
// 创建路由
const route = new Route(fn)
// 路由执行
const doc = await route.execute()
const filter1 = () => {
console.log('加工函数')
}
const filter2 = async () => {
console.log('异步加工函数')
}
const fn = async () => {
return {ret: 1}
}
const route = new Route(filter1, filter2,fn)
const doc = await route.execute()
- 异步函数比同步函数慢10倍