繁体   English   中英

Javascript退出功能,并从另一个功能返回

[英]Javascript exit function with return from another function

通过代码可以更好地理解。 假设我具有以下功能:

const firstFct = function() {
    if(!valid) {
        return 'error...';
    }

    return ...
}

我想使用第二个功能退出firstFct 而不是使用if

const secondFct = function(value, msg) {
    if(!value) {
        return msg;
    }
}

const firstFct = function() {
    secondFct(valid, "error"); // this should exit **firstFct** only if !value

    return ...
}

不知道是否有一种方法可以通过return实现。

您需要包装第一个调用的结果,以将结果与错误区分开来,以便提早退出。

const firstFct = function() {
    if (!valid) {
        return { error: 'error...' };
    }
    return ...
}

const firstFct = function() {
    var temp = secondFct(valid, "error");

    if (temp && typeof temp === 'object' && 'error' in temp) {
        return temp.error;
    }
    return ...
}

或者使用异常处理并引发错误。

IMO,您需要在2种不同的逻辑之间进行区分:

  • 决定是否进行AKA数据验证
  • 决定如何进行AKA应用流程

换句话说:不要让secondFct也决定它是否有效, 抛出错误消息。

考虑一下:

const isValid = function(data) {
  //some checks...
  return flag; // true OR false
}

const app = function() {
  // ...
  if (isValid(data)) {
    // handle error
    return 'error ...'
  }

  return ...

那么这里是一个可能的解决方案。 尽管我不建议这样做。

(我建议Nina Scholz版本)

function myFunction() {myFunction:{
    console.log('i get executed');
    break myFunction;
    console.log('i do not get executed');
}}

现在有了这个原理,您可以:

const firstFct = function() {myScope: {
    secondFct(valid, "error") ? break myScope: null;
}};

现在,如果您返回真实值,那么将暂停执行,否则它将继续。 我知道这不是您想要的100%,但是它已经足够好了。

或者,您可以引发错误,这将挂起JavaScript执行。 我也不建议这样做。

通常,对于更复杂的示例,我们也许可以为您提供更好的帮助。 您的问题可能还有另一种解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM