javascript - JS循环中抛出错误

标签 javascript loops object axios

我在后端有一些切换的特征值,我需要将它们与前端的一些值进行比较。这样网站就可以决定是否应该显示日历、菜单...(这不是这里的问题)。

从后端我得到了七个简单对象的数组:

[
  {name: "menu1"; value: "password"}
  {name: "menu2"; value: "password"}
  ...
  {name: "menu7"; value: "password"}
]

在前端我有一个对象:

  {
    "menu1": true;
    "menu1": true;
    ...
    "menu6": true;
  }

我正在使用 axios 来获取这些数据。我遇到的问题是:即使我在前端有 6 个值,整个网站也会崩溃,因为这一功能不存在。它按预期工作,但我想抛出正确的错误。代码如下:

  loadAttributes(URL) {
    return axios.get(URL)
      .then(res => {
          const {attributes} = res.data;
          const toggles = {};
          for (let i = 0; i < attributes.length; i++) {
              if (Constants.featureToggleMDs[attributes[i].name] === undefined) {
                 throw (new Error(`There is a feature: ${attributes[i].name} in ACS that is not presented in constants.`));
              }
              const left = Constants.featureToggleMDs[attributes[i].name].toUpperCase();
              const right = sha512(attributes[i].value).toUpperCase();

              toggles[attributes[i].name] = (left === right);
            }
            return toggles;
        }).catch(e => console.error(`[Feature Toggle] Attributes not supported: ${e}`));
  }

我有一个条件来检查前端对象中是否存在值,并且在调试时,我只为“menu7”输入一次这部分代码。不幸的是错误被抛出了 7 次。这就是问题所在。它是如何以及为何被抛出并被接住 7 次?这是 axios 的问题吗?我尝试用下面的代码片段简化它,它工作正常。但在我的项目中却没有。有什么想法吗?

let attributes = [
  { name: 'menu1', value: 'one' },
  { name: 'menu2', value: 'two' },
  { name: 'menu3', value: 'one' },
  { name: 'menu4', value: 'two' },
  { name: 'menu5', value: 'one' }
];

defaultFeatureToggles = {
  'menu1': false,
  'menu2': false,
  'menu3': false,
  'menu4': false
};

for (let i = 0; i < attributes.length; i++) {
  if(defaultFeatureToggles[attributes[i].name] === undefined) {
    console.warn(`This ${attributes[i].name} don't exists.`);
  }
}

最佳答案

我多次抛出的原因很简单。我在其他地方使用过这个功能,我忘记了。现在一切正常。抱歉浪费空间。

关于javascript - JS循环中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48686436/

相关文章:

c - 将四个嵌套循环转换为 CUDA 内核

jquery - 循环 jQuery 函数来检查 div 位置

android - 如何在android中挂载循环设备

c++ - 我可以假设兄弟类的静态转换将无法编译吗?

javascript - D3 条形图到堆积条形图

javascript - 单击 ‘load more’ 按钮时键盘焦点应该放在哪里

javascript - 有没有办法在Ace编辑器中将部分内容设置为只读?

javascript - 测试是否存在嵌套的 JavaScript 对象键

javascript 对象不会在控制台中打印

javascript - Angular JS 在 ng-repeat 中设置点击对象的值