优化循环JavaScript

ala*_*lan 1 javascript

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

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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢大家,我要考虑一下.如果我愿意,我可以将所有参数作为数组传递但是这会在其他地方引起我的问​​题.Basicaly我需要以与它们相同的方式获得返回值,即单个值或数组.要求的数据完全不同.我可以改变它,但不得不调查从长远来看哪种方式会更好.

Dav*_*und 8

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

if(!(dataFile instanceof Array))
    dataFile = [dataFile];
Run Code Online (Sandbox Code Playgroud)

即,如果它不是数组,则创建一个仅包含该项的数组.然后总是做循环,虽然在某些情况下它只有一次迭代.

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