我想知道是否有一种干净的方法来从Javascript函数中实现单个出口点。在普通C语言中,可以简单地使用gotoLinux kernel - example source)。

乍一看,可以使用for, break and labelsexceptions

1.对于和标签

var retCode = 0;
single_exit:
for(var done=true;done;done=false)
{
    retCode = 1;
    break single_exit;
}
if(retCode !=0)
{
    console.log('error happened. exiting');
    return;
}


2.例外情况

function SomeError () {
    this.retcode = 1;
}

SomeError.prototype = new Error();
try{
    if(someThing)
        throw new SomeError();
}
catch(e) {
  if (e instanceof SomeError) {
    return e.retcode;
  } else {
    throw e;
  }
}


还有其他(更精细)的方法来处理这种情况吗?

最佳答案

兑现承诺。

就像是:

doSomething().then( function() { doSomethingElse().then( function(){ doYetAnotherThing() }) }); return 42;

其中doSomething,doSomethingElse和doYetAnotherThing表示可能“中断”的各个步骤(其中break现在表示“返回标记为失败的承诺”)。他们每个人都应该兑现承诺。为了使代码更加平坦,您可以选择执行诺言链(在Angular中为here's a good video,但您可以忽略该部分)

10-08 07:44