函数里面的中断

比如说我们在函数里面想中断,不往下执行

methods:{
    fun1(){
        return;
        //不会往下执行
    }
}

但是如果函数里面再调用函数

methods:{
    fun1(){
        func2();
        //还是会往下执行
    },
    fun2(){
        return;
    }
}

我能想到的办法是throw

methods:{
    fun1(){
        func2();
        //不会会往下执行
    },
    fun2(){
        throw 'error';
    }
}

这种办法好不好,还有什么办法
我的应用场景是在vue的methods里面函数之间调用

阅读 2.6k
2 个回答
fun1 () {
    if (this.func2()) return false
},
fun2 () {
    return false;
}

给函数返回值就行了

即便不是以函数式编程为指导思想的编程,函数也应当各司其职,尽量减少不必要的副作用,而让被调用的函数抛错中断调用方的运行,就是一种很强烈的副作用。
你的需求可以通过其他更温和的副作用来达成,但这需要调用方func1的主动配合:

methods:{
    fun1(){
        const controller = {
            shouldStop: false
        }
        func2(controller);
        //不会会往下执行
        if(controller.shouldStop) {
            return
        }
    },
    fun2(callerController) {
        callerController.shouldStop = true;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题