async-blocker
v1.0.3
Published
async blocker
Downloads
10
Readme
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)