码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 流程控制器

时间:2018-11-01 20:30:39      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:ack   nis   \n   run   ext   test   demo   str   初始化   

/*
* 流程控制器
* 作者:caoke
* */
class Step{
    //初始化
    constructor(stepArr,callback){

        this.stepArr=stepArr;
        this.curIndex=0;
        this.hasRunTimes=Array(stepArr.length).fill(0);
        this.callback=callback;
    }
    callback(){
        this.next()
    }
    // 运行当前流程
    run(){
        const step=this.stepArr[this.curIndex]
        if(step){
            this.hasRunTimes[this.curIndex]++
            this.callback.apply(this,[step,this.hasRunTimes[this.curIndex]])
        }
    }
    // 跳转到某个流程
    go(step){
        this.curIndex=this.stepArr.indexOf(step)
        this.run()
    }
    // 进入下一个流程
    next(){
        this.curIndex++
        this.run()
    }
}

// demo
var control=new Step([‘step1‘,‘step2‘,‘step3‘,‘step4‘,‘step5‘],function (step,hasRunTime) {
    console.log(step,hasRunTime)

    switch (step){
        case ‘step5‘:
            if(hasRunTime<2){
                this.go(‘step3‘)
            }
        default:
            this.next()
    }

})

control.run()

// "C:\Program Files\JetBrains\WebStorm 2018.1.2\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" D:\17zuoye\go\test.js
// step1 1
// step2 1
// step3 1
// step4 1
// step5 1
// step3 2
// step4 2
// step5 2
//
// Process finished with exit code 0

  

JavaScript 流程控制器

标签:ack   nis   \n   run   ext   test   demo   str   初始化   

原文地址:https://www.cnblogs.com/caoke/p/9892138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!