JavaScript 流程控制器

/*
* 流程控制器
* 作者: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

  

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

时间: 2024-11-13 08:18:58

JavaScript 流程控制器的相关文章

node.js async流程控制器--queue(队列)

queue流程控制器是一个并行的流程控制器,但是它与parallel的区别在于queue可以控制一次执行几个函数,而parallel只是让所有函数并行执行. 例子如下: var q = async.queue(function (obj,cb) { setTimeout(function () { console.log(obj); cb(); },obj.time) },1) for (var i = 0; i<100; i++) { console.log(1); q.push({name:

第一百零一节,JavaScript流程控制语句

JavaScript流程控制语句 学习要点: 1.语句的定义 2.if 语句 3.switch语句 4.do...while语句 5.while语句 6.for语句 7.for...in语句 8.break和continue语句 9.with语句 ECMA-262规定了一组流程控制语句.语句定义了ECMAScript中的主要语法,语句通常由一个或者多个关键字来完成给定的任务.诸如:判断.循环.退出等 一.语句的定义  在ECMAScript中,所有的代码都是由语句来构成的.语句表明执行过程中的流

JavaScript学习笔记——javascript流程控制

javascript流程控制流程:就是程序代码的执行顺序.流程控制:通过规定的语句让程序代码有条件的按照一定的方式执行. 一.顺序结构 按照书写顺序来执行,是程序中最基本的流程结构. 二.选择结构(分支结构.条件结构) 根据给定的条件有选择的执行形相应的语句. (1) if else if else 1.单路分支 //条件可以是表达式也可以是任何的数据类型 //大括号会把他里面的代码当作一个整体来运行,如果只有一条语句,可以省略大括号 if(条件){ 条件成立执行的语句 } 2.双路分支 if(

JavaScript流程控制语句脑图

JavaScript流程控制语句脑图 图片是从网上找来的,在这记录一下,以备后面需要的时候查找方便. JavaScript通过规定的语句让有条件的按照一定的方式执行. 分为:循环语句 while do-while for for-in 跳转语句 return break continue 选择语句 if switch 异常处理语句 throw try catch finally 图片来自www.w3cschool.cn如有侵权请告知我删除. 原文地址:https://www.cnblogs.co

JavaScript 流程控制语句

一.if 语句 if语句是基于条件成立才执行相应代码时使用的语句. 语法:if(条件) {条件成立时执行代码} 例子: <script type="text/javascript"> var mycarrer = "HTML"; if (mycarrer == "HTML") { document.write("你面试成功,欢迎加入公司."); }</script> 二.if...else 语句(二选一

javascript流程控制

一.顺序结构 按照书写顺序来执行,是程序中最基本的流程结构. 二.选择结构(分支结构.条件结构) 根据给定的条件有选择的执行形相应的语句. (1)   if    else if     else 1.单路分支 if(条件){ 条件成立执行的语句 } 2.双路分支 if(条件){ }else{ } 3.多路分支 if(条件1){ }else if(条件2){ }else if(条件3){ }......else{ } (2) switch(变量任何的数据类型){ case 值1: 表达式1: b

javascript流程控制语句-循环

一.JS中的流程控制语句(if语句) 格式: if(条件1){ 如果条件1成立,执行这里代码 }else{ 如果条件不成立,则执行这里代码 } 格式: if(条件1){ 如果条件1成立,执行这里代码 }else if(条件2){ 如果条件2成立,执行这里代码 }else if(条件3){ 如果条件3成立,执行这里代码 }.......... else{ 如果条件1到条件n都不成立,执行这里代码 } 嵌套格式: if(条件1){ if(条件){ 如果条件成立,执行这里代码 } }else{ 如果条

题目(或游戏)流程控制器上传到GitHub

题目控制系统 1 支持 题目按相同的个数分组 2 支持 pause resume 3 支持 每题限定时间 4 支持 支持对计时器进行回调 5 支持 在全流程开始,全流程结束,每组开始,每组结束,每题开始,每题结束,执行某些操作 代码地址: https://github.com/JasonXiaoSpace/GreenFloor_Html5_Game/tree/master/Libs/Gospel/flow

JavaScript流程语句

循环语句 while 语法 while(条件表达式){ 循环执行代码段 } 流程 1.判断条件表达式的值 2.当值为true时,循环执行代码段 3.当值为false时退出循环体 特性 先检查条件,再执行循环 条件不满足则循环一次也不会执行 作用 一个动作被重复执行到满足某个条件时 do-while 语法 do{ 循环执行的代码段 }while(条件表达式) 流程 1.先执行循环体内代码再进行判断 2.如果表达式的值为true,则重复执行代码段 3.如果表达式的值为false,则推出循环体 特性