假设我有这个功能(伪代码):
function Foo() {
let varThatRequiresCleanup = //something
if(condition1) {
return Error1;
}
if(condition2) {
return Error2;
}
if(condition3) {
return Error3;
}
//etc.. more ifs and important code.
varThatRequiresCleanup.CleanUp();
return Success;
}
来自 C++ 和 C 世界,我只会在析构函数中实现清理或使用 goto
,但 JavaScript 两者都没有。
每当 Foo()
返回时,我将如何调用 CleanUp()
?
是在我返回的每个 if
中调用 CleanUp()
的唯一方法吗?
最佳答案
一种替代方法是对重复代码使用一个函数:
function Foo() {
let varThatRequiresCleanup = //something
function CleanUpAndReturn(returnValue) {
varThatRequiresCleanup.CleanUp();
return returnValue;
}
if (condition1) { return CleanUpAndReturn(Error1); }
if (condition2) { return CleanUpAndReturn(Error2); }
if (condition3) { return CleanUpAndReturn(Error3); }
//etc.. more ifs and important code.
return CleanUpAndReturn(Success);
}
关于javascript - 如何始终在函数结束时运行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996654/