shy-Do

npm install shy-Do

Usage no npm install needed!

<script type="module">
  import shyDo from 'https://cdn.skypack.dev/shy-Do';
</script>

README

install

npm install shy-Do

支持UMD加载

description

本质是任务队列,将一个个任务放入一个数组,按顺序执行,碰到wait类型的暂停执行,等待wait完成(ps:出现错误也被视为完成)后再从上次的位置继续执行,全部执行完成后清空任务队列

API

const Do = require('shy-Do')
//静态属性
Do
.version						//版本号
//静态方法
.isDo(obj)						//判定某个值是不是Do对象
.Symbol(obj)					//返回一个对象 new
.scope(doFunc,catchFunc)		//安全地执行操作 new

let a = new Do()
a
//实例方法
.wait(function(rl,rj,val){})	//将一个延迟事件加入任务队列
.done(function(val){})			//将一个事件加入任务队列
.catch(function(err){})			//捕捉错误,和promise中的catch行为一致
.then(f1,f2)					//语法糖,返回一个新的Do对象
.result(f1,f2)					//f1|f2各自会得到Do对象的value|error,但他们不会改变Do对象的value|error
.state() 						//返回状态{state,value,error} new

//实例属性
.name							//'Do'
.constructor					//Do对象的构造函数,用来判断是不是Do对象

重要版本更新

1.1.0删除了.depend实例方法,查看属性移至实例方法.state 1.0.3修复then,万物从new Do()开始 1.0.0最终wait的参数顺序由(val,rl,rj)改为(rl,rj,val),选择和Promise保持一致,因为我在实战中发现.wait多写个reject也没什么的,倒是.result中写个null反而意味不明,顺带可以推广Promise何乐不为

0.2.1修复depend

0.1.8wait的参数顺序由(rl,rj,val)改为(val,rl,rj),不与Promise的参数顺序保持一致

0.1.4result如果抛出一个错误,现在不会影响原来Do的结果

已知问题

某些情况下会发生回调溢出,如下:

var x = Do.wait(function(rl,rj){
    setTimeout(function(){rl(7)},2000)
})
for(var i=0;i<10000;i++){
    x = x.then(fucntion(i){
        return i+1
    })
}
//x的值直到最后一个then执行都不会被释放,导致了溢出,这种情况改用done
x.then(funciton(i){
    console.log(7777)
})

这个时候我选择抛(go)出(die)异常