1.0.18 • Published 4 years ago

w-queue v1.0.18

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

w-queue

An operator for queues.

language npm version Build Status license gzip file size npm download jsdelivr download

Documentation

To view documentation or get support, visit docs.

Installation

Using npm(ES6 module):

Note: w-queue does't depend on any package.

npm i w-queue

Example for geting messages one by one:

Link: [dev source code]

import WQueue from 'w-queue'

//wq let wq = new WQueue({ takeNumLimit: 1 })

//message wq.on('message', function(qs) { console.log('message', qs)

//get
let v = wq.get()
if (!v) {
    return
}
console.log('get', v)

setTimeout(function() {
    console.log('cb', v)

    //cb
    wq.cb()

}, 1000)

})

//n let n = 0

//queues push 1~5 setTimeout(function() { console.log('queues push 1~5') let t = setInterval(function() { n += 1 wq.push('$' + n) if (n === 5) { clearInterval(t) } }, 50) }, 1)

//queues push 6~10 by delay 1s setTimeout(function() { console.log('queues push 6~10') let t = setInterval(function() { n += 1 wq.push('$' + n) if (n === 10) { clearInterval(t) } }, 50) }, 1000)

// queues push 1~5 // message '$1' // get $1 // queues push 6~10 // cb $1 // message '$2', '$3', '$4', '$5', '$6' // get $2 // cb $2 // message '$3', '$4', '$5', '$6', '$7', '$8', '$9', '$10' // get $3 // cb $3 // message '$4', '$5', '$6', '$7', '$8', '$9', '$10' // get $4 // cb $4 // message '$5', '$6', '$7', '$8', '$9', '$10' // get $5 // cb $5 // message '$6', '$7', '$8', '$9', '$10' // get $6 // cb $6 // message '$7', '$8', '$9', '$10' // get $7 // cb $7 // message '$8', '$9', '$10' // get $8 // cb $8 // message '$9', '$10' // get $9 // cb $9 // message '$10' // get $10 // cb $10

#### Example for parallel, messages are limited by 2 events:
> **Link:** [[dev source code](https://github.com/yuda-lyu/w-queue/blob/master/sclb.mjs)]
```alias
import WQueue from 'w-queue'


//wq
let wq = new WQueue({ takeNumLimit: 2 })


//message
wq.on('message', function(qs) {
    console.log('message', qs)

    //get
    let v = wq.get()
    if (!v) {
        return
    }
    console.log('get', v)

    setTimeout(function() {
        console.log('cb', v)

        //cb
        wq.cb()

    }, 1000)

})


//n
let n = 0


//queues push 1~5
setTimeout(function() {
    console.log('queues push 1~5')
    let t = setInterval(function() {
        n += 1
        wq.push('$' + n)
        if (n === 5) {
            clearInterval(t)
        }
    }, 50)
}, 1)


//queues push 6~10 by delay 1s
setTimeout(function() {
    console.log('queues push 6~10')
    let t = setInterval(function() {
        n += 1
        wq.push('$' + n)
        if (n === 10) {
            clearInterval(t)
        }
    }, 50)
}, 1000)


// queues push 1~5
// message [ '$1' ]
// get $1
// message [ '$2' ]
// get $2
// queues push 6~10
// cb $1
// message [ '$3', '$4', '$5', '$6' ]
// get $3
// cb $2
// message [ '$4', '$5', '$6', '$7' ]
// get $4
// cb $3
// message [ '$5', '$6', '$7', '$8', '$9', '$10' ]
// get $5
// cb $4
// message [ '$6', '$7', '$8', '$9', '$10' ]
// get $6
// cb $5
// message [ '$7', '$8', '$9', '$10' ]
// get $7
// cb $6
// message [ '$8', '$9', '$10' ]
// get $8
// cb $7
// message [ '$9', '$10' ]
// get $9
// cb $8
// message [ '$10' ]
// get $10
// cb $9
// cb $10

Example for parallel, get messages with no restriction:

Link: [dev source code]

import WQueue from 'w-queue'

//wq let wq = new WQueue() //default takeNumLimit=0, not limit

//message wq.on('message', function(qs) { console.log('message', qs)

//get
let v = wq.get()
if (!v) {
    return
}
console.log('get', v)

setTimeout(function() {
    console.log('cb', v)

    //cb
    wq.cb()

}, 1000)

})

//n let n = 0

//queues push 1~10 setTimeout(function() { console.log('queues push 1~10') let t = setInterval(function() { n += 1 wq.push('$' + n) if (n === 10) { clearInterval(t) } }, 50) }, 1)

// queues push 1~10 // message '$1' // get $1 // message '$2' // get $2 // message '$3' // get $3 // message '$4' // get $4 // message '$5' // get $5 // message '$6' // get $6 // message '$7' // get $7 // message '$8' // get $8 // message '$9' // get $9 // message '$10' // get $10 // cb $1 // cb $2 // cb $3 // cb $4 // cb $5 // cb $6 // cb $7 // cb $8 // cb $9 // cb $10

### In a browser(UMD module):
> **Note:** `w-queue` does't depend on any package.

[Necessary] Add script for w-queue.
```alias
<script src="https://cdn.jsdelivr.net/npm/w-queue@1.0.17/dist/w-queue.umd.js"></script>

Example:

Link: [dev source code]

//wq
let WQueue = window['w-queue']
let wq = new WQueue({ takeNumLimit: 1 })

//message wq.on('message', function(qs) { console.log('message', qs)

//get
let v = wq.get()
if (!v) {
    return
}
console.log('get', v)

setTimeout(function() {
    console.log('cb', v)

    //cb
    wq.cb()

}, 1000)

})

//n let n = 0

//queues push 1~5 setTimeout(function() { console.log('queues push 1~5') let t = setInterval(function() { n += 1 wq.push('$' + n) if (n === 5) { clearInterval(t) } }, 50) }, 1)

//queues push 6~10 by delay 1s setTimeout(function() { console.log('queues push 6~10') let t = setInterval(function() { n += 1 wq.push('$' + n) if (n === 10) { clearInterval(t) } }, 50) }, 1000)

// queues push 1~5 // message '$1' // get $1 // queues push 6~10 // cb $1 // message '$2', '$3', '$4', '$5', '$6' // get $2 // cb $2 // message '$3', '$4', '$5', '$6', '$7', '$8', '$9', '$10' // get $3 // cb $3 // message '$4', '$5', '$6', '$7', '$8', '$9', '$10' // get $4 // cb $4 // message '$5', '$6', '$7', '$8', '$9', '$10' // get $5 // cb $5 // message '$6', '$7', '$8', '$9', '$10' // get $6 // cb $6 // message '$7', '$8', '$9', '$10' // get $7 // cb $7 // message '$8', '$9', '$10' // get $8 // cb $8 // message '$9', '$10' // get $9 // cb $9 // message '$10' // get $10 // cb $10

1.0.18

4 years ago

1.0.17

4 years ago

1.0.16

4 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.5

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago