javascript - 如何在javascript中终止父函数的执行?

标签 javascript closures evaluation

我需要覆盖函数的一些行为,在它调用其他函数之后。问题是这个父函数是一个库,我不想改变它,所以像做一些标志或这个函数的另一个改变这样的解决方案不是很好。我知道我在函数中有一个可以更改的调用者对象,所以也许我可以用它弄清楚。这是示例:

function parent()
{
  console.log("some need stuff");
  some.handler.function.from.config.that.i.can.change();
  console.log("need omit this right till the end");
}

function child()
{
  console.log("need to somehow stop evaluation of " + child.caller + " function");
}

作为一名 ruby​​ 程序员,我知道有 lambda 表达式,您可以使用它从闭包的内部范围终止计算。但我不确定如何从 javascript 执行此操作。

最佳答案

您不能直接这样做。 (此外 .caller 已过时)

但是你可以使用一个肮脏的技巧:

try{
    parentFunction();//calls child
}catch(e){
   //done
}

function child(){
    doWhatever();
    throw new Error("this will hopefully propagate");
}

Fiddle

这仅在假设父级在调用子级时自身未捕获异常的情况下才有效。

此外,使用异常进行流量控制通常不是一个好主意。将其用作最后的手段。

关于javascript - 如何在javascript中终止父函数的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17383852/

相关文章:

javascript - 如何使用javascript获取表格中的所有Div

Python:在重新分配外部函数后,闭包如何继续存在?

linux - Linux调度器的性能评估

javascript - 如何在javascript中设置日期格式?

javascript - 有没有办法用JS检测机器人(比如谷歌)?

javascript - 如何访问 html 中的 @Html.TextBox 值

javascript - 保存从node.js和mongoose返回的GET请求到变量

ios - 闭包与委托(delegate)模式

scala - Spark (Scala) 中的排名指标

java - Predictionio 评估因 empty.maxBy 异常和 java.lang.OutOfMemoryError 训练失败