1.0.3 • Published 1 year ago

async-blocker v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

async-blocker

介绍

利用Promise,async,await进行异步流程的暂停,开始,结束操作

安装教程

npm i async-blocker -S

使用说明

示例1:

// 主动触发测试

const  AsyncBlocker = require('async-blocker').default
const emitter = AsyncBlocker()

emitter.on('test',(data)=>{
    return new Promise((resolve)=>{
        setTimeout(()=>{
            resolve()
        },1000)
    })
})
let count = 0;
(async () => {
    console.log('start')
    try {
        while(count<10) {
            count++
            if(count>2){
                //结束
                emitter.reject('test')
            }
            //触发test事件,完成后继续执行while循环
            await emitter.emit('test');
            console.log('count>>', count);
        }
    } catch(e) {
        console.log('4>>>', e)
    }
    console.log('end',count)
})()

示例2

const AsyncBlocker = require('async-blocker').default
const emitter = AsyncBlocker()

let count = 0;
(async () => {
    console.log('start')
    try {
        while(count<5) {
            count++
            //阻塞while循环
            await emitter.breakPoint('test')
            console.log('count>>', count);
        }
    } catch(e) {
        console.log('4>>>', e)
    }
    console.log('end',count)
})()

setInterval(() => {
    //开关,resolve后,while循环继续    
    //refresh后,while循环阻塞
    //reject后,while循环停止
    emitter.resolve('test').refresh('test');
    if(count>2){
        emitter.reject('test')
    }
},1000)

示例3

//多个同名break-point会同时切换状态

const AsyncBlocker = require('async-blocker').default
const emitter = AsyncBlocker()

let count = 0;
(async () => {
    console.log('start')
    try {
        while(count<5) {
            count++
            //阻塞while循环
            await emitter.breakPoint('test')
            console.log('count>>', count);
        }
    } catch(e) {
        console.log('4>>>', e)
    }
    console.log('end',count)
})()
async function run(n){
    console.log('::', n)
    await emitter.breakPoint('test')
    run(n+1)
}
run(1)

setInterval(() => { 
    emitter.resolve('test').refresh('test');
},1000)
1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago