1

パラメータは次のとおりです。

data: オブジェクトの配列。

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 とタイプの繰り返しで分解されます。私はそれを次のように渡します:

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

したがって、リストと anonfunction を使用して関数を実行した後、サンプルを使用して、google と yahoo にリクエストを送信します。

編集2:

関数は次のようになります。

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

1 に答える 1

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)

:)

于 2012-09-26T17:27:17.410 に答える