有没有办法退出调用当前正在执行的函数的函数?
一个例子是:
function doOneTwoThree(){
doStuff(1, print);
doStuff(2, print);
doStuff(3, print);
}
function doStuff(parameter, aFunction){
if(parameter === 2) {
//exit from doOneTwoThree
}
aFunction(parameter);
}
function print(something){
console.log(something);
}
另一种选择是在doStuff
中返回错误,并在每次调用doOneTwoThree
时检查doStuff
中的错误。但我不想每次都检查它......
答案 0 :(得分:2)
您可以使用throw
并抓住doOneTwoThree
中的错误:
function doStuff(parameter, aFunction) {
if (parameter === 2) {
throw "error";
}
}
function doOneTwoThree() {
try {
doStuff(1, print);
doStuff(2, print);
}
catch (error) { /* handle here */ }
}
然而,如果你没有抛出实际的错误/异常,你应该不使用它来控制你的代码流。相反,您应该检查doStuff
来电的返回值,以确认您可以继续。如果这对您来说听起来不干净,您还可以执行链接doStuff
调用之类的操作,或者根据doStuff
返回值在循环中调用它们。
答案 1 :(得分:0)
尝试这样的事情?返回令牌/魔术值? (像'eek'这样的字符串可能是一个不好的标记,但它很有趣,使用int代替)
function doOneTwoThree(){
if (doStuff(1, print) === "eek") return;
doStuff(2, print);
doStuff(3, print);
}
function doStuff(parameter, aFunction){
if(parameter === 2) {
return "eek";
}
aFunction(parameter);
}