我想知道是否有一种干净的方法来从Javascript函数中实现单个出口点。在普通C语言中,可以简单地使用goto
(Linux kernel - example source)。
乍一看,可以使用for, break and labels
和exceptions
。
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,但您可以忽略该部分)