async-blocker

1.0.3 • Public • Published

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)

Readme

Keywords

Package Sidebar

Install

npm i async-blocker

Weekly Downloads

5

Version

1.0.3

License

ISC

Unpacked Size

56.1 kB

Total Files

12

Last publish

Collaborators

  • whyymj