javascript - 如何始终在函数结束时运行清理?

标签 javascript node.js

假设我有这个功能(伪代码):

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/

相关文章:

node.js - 哈希然后存储token,需要多少成本?

javascript - 如何在 javascript 中选择大整数中的第 n 个数字?

Javascript 基本算法

Javascript Regex 只替换第一次匹配出现

javascript - 尽管 async/await,nestJS Mongoose 回调在返回后仍被调用

node.js - useContext 不存储我的数据,并为我提供了默认设置

javascript - 为什么 shuffle 在 React 中不起作用?

javascript - 使用 css 删除行后表格中断

javascript - 在 puppeteer 中,使用 page.$eval() 和 page.evaluate() 方法时,术语 pageFunction 意味着什么

node.js - Node AWS Lambda + Twitter API : data is not defined