除了在主函数调用return,还有什么办法能终止主函数继续向后执行?
function main () {
// other code
// 1. 目前的实现方式
if(!validateSomethind()){
return
}
// 2. 期望的实现方式
validateSomething()
// other code
}
function validateSomething () {
if("表达式"){
return true
}
// 这里除了抛错能终止主函数像后执行,还有其他方式吗?
return false
}
如上代码所示,类似的在业务开发中应该很常见。如果类似于validateSomething这样的方法在多处外部函数调用,多处外部函数还需要再写一次if判断。这种内外都是判断就感觉不那么好。大家对这种情况有其他见解吗?或者有什么更好的组织方式。
7 回复
可以考虑装饰器,虽然依然没有进入标准 类似
@ValidParam()
function main () {
// do some thing
}
function ValidParm(...parms: unknown[]) {
// validation
}
我也一直用的抛错,比较简单直接
楼上的没看懂……
朋友们有好方案记得 @ 我
async函数 可以返回Promise.reject(“error”), 应该比较简洁了
@daGaiGuanYu 在注解方法 ValidParm() 里面先执行验证逻辑,如果不符合就直接return,否则继续执行被注解的函数(比如 main)
@waitingsong 这个,,,,,不用注解,直接用 alidParam 方法,除了写法上更简洁还有别的优点吗
楼主主要想解决的问题应该是嵌套很多函数,立即停止,比如:
function a() {
b()
}
function b() {
c()
}
function c() {
d(2)
}
function d(param) {
if(typeof param != 'string')
throw Error('type error')
}
@cd-xulei 是这个意思吗
差不多。我那个意思就 a b c 直接或间接调用d 。 如果是d返回false。外部函数就不继续向后执行了。
目前看来只有在d函数内 抛错的方法。虽然看起来不是很好的感觉,然后外部函数静默处理这个错误。
process.exit() 能用吗?