如何在同一个变量中多次使用解构

问题描述 投票:0回答:1

我有一个包含多个 if 语句的旧代码,并且在每个语句上我都需要获取 HTTP 状态代码。像这样的东西:

if (x == 1) {
  const { statusCode } = await request(httpUrl...)
  ...
}
else if (x == 2) {
  const { statusCode } = await request (aDifferentHttpUrl...)
  ...
}
// and other if's

我想将其重构为 switch-case 语句,以便对未来的我和其他人更具可读性。但后来我意识到我不能像在多个 if 语句中那样多次“const { statusCode }”,并且我无法将 const 声明移动到 switch-case 之外,因为 URL 根据 x 的值而变化。

是否有正确的方法来使用我不知道的同一变量的解构? 重要的是要注意我对 javascript 还比较陌生

我尝试将每个 if 内的代码复制粘贴到 switch 中对应的情况。我想做一些类似的事情:

switch (x) {
  case 1:
    { statusCode } = await request(http)
    ...
    break
  
  case 2:
    { statusCode } = await request(anotherHttp)
    ...
    break
  
  case ...
}

所以我不需要为每种情况声明整个响应对象

编辑:代码拼写错误

javascript switch-statement destructuring
1个回答
0
投票

您可以将案例包装在块语句中,以使每个案例都有一个本地范围。

switch (expression) {
  case 1: {
    const { statusCode } = await request(http)
    /* ... */
  }
  break

  case 2: {
    const { statusCode } = await request(anotherHttp)
    /* ... */
  }
  break

  /* ... */
}
© www.soinside.com 2019 - 2024. All rights reserved.