1.0.1-beta.15 • Published 6 years ago

rock-queue v1.0.1-beta.15

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

rock-queue

rock-queue是一个任务队列管理框架,可以将复杂细碎的业务流程,拆分成多个任务模块,通过组合不同的任务模块,完成复杂的操作。

Queue

Queue的config参数

  • overTime 设置queue的超时时间,单位是毫秒,默认是10000毫秒(10秒钟)

如何使用Queue类

import { Queue, Task, QueueTask } from 'rock-queue'

// 实例化Queue
const queue  =  new Queue()

// 通过push方法向队列中添加任务

// push方法接收string,number,boolean三种基本类型的参数,参数的值会作为当前任务节点的返回值传递到下一个任务节点
queue.push(1)

// push方法接收Function类型的参数,Function类型的参数作为回调函数被调用,包含三个参数
// 1.req是queue的请求参数
// 2.res是queue的上一个任务的返回值,如果当前任务是queue中的第一个,则这个参数是queue的start方法的defaultRes参数值
// 3.next方法用来结束当前的任务,并触发下一个任务,可以通过next方法传递一个参数作为返回值,传递到下一个任务模块
// 4.error方法会结束整个队列的调用,并且抛出一个错误,可以通过catch方法捕获
queue.push((req, res, next, error) => {
 // res的值是1
 const res = queueData.getRes()
 next(2)
})

// push方法接受Task类型的对象,这种类型的参数和直接传入Function类型的参数是等价的
queue.push(new Task((req, res, next, error) => {
	// res的值是2
	const res = queueData.getRes()
	next(3)
}))

// push方法接受Queue类型的对象

const queue2 = new Queue()
queue2.push(1)

queue.push(new QueueTask(queue2, (req, res, next) => {
 // next函数的参数会作为调用queue2的start方法的参数
 next('x', 'y')
}))



// 调用queue的start方法,可以触发一个队列的执行
queue.start(req, defaultRes).then((res) => {
 // output:2
 console.log(res)
}).catch(error => {
 // 处理错误
})

Task

Task类是所有任务的基类,Task的构造函数接受一个函数类型的构造函数,最为回调函数。

QueueTask

QueueTask继承自Task,可以将一个定义好的Queue实例转换为Task实例,可以达到Queue复用的目的。

import { Queue, QueueTask } from 'rock-queue'

// 实例化Queue类,作为子队列
const childQueue = new Queue()

// 向队列中添加任务
childQueue.push(1)


// 实例化Queue类
const queue  =  new Queue()

// 向队列中添加队列任务
queue.push(new QueueTask(childQueue, (req, res, next) => {
  next(2, 3)
}))

// 调用queue的start方法,可以触发一个队列的执行
queue.start().then((res) => {
  // output:1
  console.log(res)
}).catch(error => {
  // 处理错误
})

ConditionalTask

所有流程控制任务的基类,控制队列的执行流程,不会影响数据的传递

流程控制Task

  • If
  • Else
  • ElseIf
  • EndIf
import { Queue, If, Else, ElseIf, EndIf } from 'rock-queue'

// 实例化Queue
const queue  =  new Queue()

// 会被执行
queue.push(1)

queue.push(new If(true))

// 会被执行
queue.push(2)

queue.push(new Else())

// 不会执行
queue.push(3)

queue.push(new EndIf())

// 会被执行
queue.push(4)

// 开始队列
queue.start().then(res => {
  //  output:4
  console.log(res)
})

Installation

npm install rock-queue

MIT Licenced

1.0.1-beta.15

6 years ago

1.0.1-beta.14

6 years ago

1.0.1-beta.13

6 years ago

1.0.1-beta.12

6 years ago

1.0.1-beta.10

6 years ago

1.0.1-beta.9

6 years ago

1.0.1-beta.8

6 years ago

1.0.1-beta.7

6 years ago

1.0.1-beta.4

6 years ago

1.0.1-beta.3

6 years ago

1.0.1-beta.2

6 years ago

1.0.1-beta.1

6 years ago

1.0.1-beta.0

6 years ago

1.0.0-beta.46

6 years ago

1.0.0-beta.45

6 years ago

1.0.0-beta.43

6 years ago

1.0.0-beta.42

6 years ago

1.0.0-beta.41

6 years ago

1.0.0-beta.40

6 years ago

1.0.0-beta.39

6 years ago

1.0.0-beta.38

6 years ago

1.0.0-beta.37

6 years ago

1.0.0-beta.36

6 years ago

1.0.0-beta.35

6 years ago

1.0.0-beta.34

6 years ago

1.0.0-beta.33

6 years ago

1.0.0-beta.32

6 years ago

1.0.0-beta.31

6 years ago

1.0.0-beta.30

6 years ago

1.0.0-beta.29

6 years ago

1.0.0-beta.28

6 years ago

1.0.0-beta.27

6 years ago

1.0.0-beta.26

6 years ago

1.0.0-beta.25

6 years ago

1.0.0-beta.24

6 years ago

1.0.0-beta.23

6 years ago

1.0.0-beta.22

6 years ago

1.0.0-beta.21

6 years ago

1.0.0-beta.20

6 years ago

1.0.0-beta.19

6 years ago

1.0.0-beta.18

6 years ago

1.0.0-beta.17

6 years ago

1.0.0-beta.16

6 years ago

1.0.0-beta.15

6 years ago

1.0.0-beta.14

6 years ago

1.0.0-beta.13

6 years ago

1.0.0-beta.12

6 years ago

1.0.0-beta.9

6 years ago

1.0.0-beta.8

6 years ago

1.0.0-beta.7

6 years ago

1.0.0-beta.6

6 years ago

1.0.0-beta.5

6 years ago

1.0.0-beta.4

6 years ago

1.0.0-beta.3

6 years ago

1.0.0-beta.2

6 years ago

1.0.0-beta.1

6 years ago

1.0.0

6 years ago