javascript - 优化循环 JavaScript

标签 javascript

ai 起来,看看这个愚蠢的代码。我想传递一个字符串或一个数组并返回数据。这段代码确实有效,但很糟糕。作为消除重复并尽可能优化它的最佳方法,您会推荐什么?谢谢:)

var getData = function (dataFile) {

  var ajaxResponse = [],
      loop,
      i;

  if(dataFile instanceof Array) {
    loop = dataFile.length;
    for(i = 0; i < loop; i++) {
      $.ajax({
        url: dataFile[i],
        type: "post",
        async: false,
        dataType: "json",
        success: function (data) {
          ajaxResponse[i] = data;
        }
      });
    }
  }
  else {
    $.ajax({
      url: dataFile,
      type: "post",
      async: false,
      dataType: "json",
      success: function (data) {
        ajaxResponse = data;
      }
    });
  }
  return ajaxResponse;
}

谢谢大家,我得考虑一下。如果我愿意,我可以将所有参数作为数组传递,但这会导致我在其他地方出现问题。基本上我需要以返回值的相同方式获取返回值,即单个值或数组。所要求的数据是完全不同的。我可以改变它,但我必须调查从长远来看哪种方式会更好。

最佳答案

如果我正确理解代码,这应该可以工作:

if(!(dataFile instanceof Array))
    dataFile = [dataFile];

即,如果它不是数组,则创建一个仅包含该项目的数组。然后总是执行循环,尽管在某些情况下它只会有一次迭代。

我应该补充您想要查看您在 for 循环中对 i 变量的使用。您应该将声明更改为 for(var i...,而不仅仅是 for(i...。在没有 var 的情况下引入变量> 关键字 将始终使该变量成为全局变量。这意味着该循环很可能会在另一个函数中的完全不同的 for 循环中更改 i 的值,而您将完全不知道发生了什么。

关于javascript - 优化循环 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955754/

相关文章:

javascript - 自动调整网格列的宽度以显示所有数据

javascript - 未捕获的类型错误 : Cannot call method 'replace' of undefined underscore. js

c# - 将 JS OnClientClick 添加到代码隐藏中的按钮时出现问题

javascript - 如何从使用 rjxs 从 API 获取值的服务返回映射字符串?

javascript - 控制 CSS 状态 : hover, 事件

JavaScript:如何将网站结构的状态保存到链接(或哈希链接)

javascript - JQuery TableSorter 单击操作没有效果

javascript - 将中文UTF8转换为可读字符串

javascript - 如何用我的js获取按钮的id值?

javascript - 控制台错误 : Unrecognized alias: widget. feedform