创建一个接受对象列表和一个匿名函数的函数来完成它们

时间:2012-09-26 17:14:54

标签: javascript jquery

参数是:

数据:一个对象数组。

anonFunction:一个函数,其参数与从数据中对象的参数相同。

目标:

它将遍历数据,并且每次使用新参数触发anon函数。

思想/尝试:

 function special(data, executeFunction){
    var callback = function(){
       if(executeFunction){
          executeFunction();
       }
    }
    var d = JSON.parse(data);
    for( var i = 0; i < d.length; i++){
       var object = d[i];
       callback(object);
    }
 }

看起来对吗?我能看到的唯一问题是对象是序列化的。所以我需要按顺序传入项目的值。可能以某种方式完成的图。我不确定。 :(

如你所见,我有一些差距。

编辑:一些示例数据:

data = [{"url": "google.com", "type":"POST"}, {"url":"yahoo.com","type":"GET"}]

它将被分解为url和type的迭代。 我会把它传递给:

anonFunction(a,b){
     $.ajax({url:a, type:b});
}

所以在用一个列表和一个函数执行我的函数后,它会用我的样本,向google和yahoo请求。

Edit2:

该功能的外观如下:

 //given data from above.
 special(data, function(a,b){
     $.ajax({url:a, type:b});
 });

1 个答案:

答案 0 :(得分:2)

您定义的callback函数不接受任何参数。之后,您将对象传递给它,但它不会对它做任何事情。

但是,我认为你过于复杂了。你只需要:

function special(data, callback){
  if(!callback) return;
  var d = JSON.parse(data);
  for( var i = 0; i < d.length; i++){
    callback(d[i]);
  }
}

special(data, $.ajax);

作为奖励,在Coffeescript中,这就像是:

$.ajax(settings) for settings in JSON.parse(data)

:)