var PromiseThen = function(){
var fns = [];
this.then = function(fn){
fns.push(fn);
return this;
}
this.main = function (p){
var
//工序id
i = -1,
//是否停止
isStop = false;
//继续流程
resolve = function(o){
if( isStop ) return;
p = o;
i++;
fns[i] && fns[i].call({suc: resolve},p,resolve);
};
//触发第一道工序
resolve(p);
return this;
}
this.start = function(param){
//新建工序
return new this.main();
}
//清除掉
this.remove = function(index){
if( !index ){
fns = [];
}
}
//插入工序
this.add = function(fn,index){
fns.splice(index,0,fn);
}
}
var b = new PromiseThen()
//第一道工序
.then(function(p,suc){
setTimeout(function(){ suc(); },5000)
})
//第二道工序
.then(function(p,suc){
debugger; suc();
})
//第三道工序
.then(function(p,suc){
debugger; suc();
})
//开始
.start();
原文:https://www.cnblogs.com/liao1992/p/10756995.html