PromiseThen 横向代码编辑

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();

posted @ 2019-04-23 16:03  blurs  阅读(105)  评论(0编辑  收藏  举报