发布订阅模式一般是add加入,然后publish一次性释放,但是假设add的是这种带时间控制的,也就是说,我不但要函数一次执行,也希望它是在每次延迟时间过后再执行,这样一次执行完,求高手指点!!!非常期待实现!
1 回答
大话西游666
TA贡献1817条经验 获得超14个赞
var Ob = {
arr: [],
add(fn, val){
this.arr.push({
fn,
val
})
return this
},
fire(){
var arr = this.arr
var obj = arr.splice(0, 1)[0] || {}
obj.fn && this.timeout(obj.val, obj.fn)
},
timeout(val, cb){
setTimeout(x => {
cb()
this.fire()
}, val * 1000)
}
}
var a = function(){ console.log(1) }
var b = function(){ console.log(2) }
var c = function(){ console.log(3) }
Ob.add(a, 1).add(b, 1.5).add(c, 0.8)
Ob.fire()
添加回答
举报
0/150
提交
取消