代码之家  ›  专栏  ›  技术社区  ›  Tanzeel

如何在Typescript中使用break语句

  •  0
  • Tanzeel  · 技术社区  · 5 年前

    我是Javascript新手。我从一个非常基础的角度项目开始,即表单验证。在我的情况下,我必须调用我的自定义方法, validationTest() 只有一次。如果我不设置任何中断条件,那么将有太多的递归。我必须停止这一切。我尝试了很多其他的解决方案:

    1. Break Statement in TypeScript
    2. TypeScript - Loops

    我很小心地跟着他们,但我明白了:

    模块分析失败:不同步中断(84:12)

    validationTest() {
        let count =0;
        this.isAnyRangeInvalid = false;
        this.monthpicker.forEach(picker => {
            if (picker.isValidRange === false) {
                this.isAnyRangeInvalid = true;
            }
        });
        count ++;
        if(count===1) {
            break;
        }
        this.validationTest();
    }
    

    甚至VScode编辑器也在令牌下显示一条红色的之字形线 break . 我来自Java和CPP背景。请纠正我。

    1 回复  |  直到 5 年前
        1
  •  2
  •   CertainPerformance    5 年前

    要停止函数的执行,请使用 return break 只有在 for while 循环。

    validationTest 没有 持久的 count 变量-它完全是局部的,所以测试无论如何都不起作用。请考虑传递一个参数,该参数将指示当前调用是否递归:

    validationTest(lastTry = false) {
        this.isAnyRangeInvalid = false;
        this.monthpicker.forEach(picker => {
            if (picker.isValidRange === false) {
                this.isAnyRangeInvalid = true;
            }
        });
        if (!lastTry) this.validationTest(true);
    }
    

    确保 验证测试 不传递参数,或传递 false .

    validationTest(triesLeft = 3) {
        this.isAnyRangeInvalid = false;
        this.monthpicker.forEach(picker => {
            if (picker.isValidRange === false) {
                this.isAnyRangeInvalid = true;
            }
        });
        if (triesLeft !== 0) this.validationTest(triesLeft - 1);
    }