-1
私はREST
呼び出しを使用していくつかのデータを収集しています。ループ内で関数を作成しないようにするにはどうすればよいですか?
私は私が自分の子供に関する詳細な情報を得ることができる人
のリストを返す「ディレクトリ」のエンドポイントへの呼び出しを行い、以下の機能を持っています。
個人情報を取得するには、個々のAPIにヒットする必要があります。
var listOfPeople = [];
var numberOfKids = [];
//using superagent
var req = request.get(ApiPrefix + "/directory");
req.end(function (err, res) {
if (err || !res.ok) {
console.log("Error obtaining directory");
} else {
listOfPeople.add(res.body);
// loop to retrieve all events.
for (var i = 0; i < res.body.length; i++) {
var personID = res.body[i].id;
$.getJSON('/directory/person', {
id: personID
},
function (result) {
numberOfKids.add(result);
});
}
}
});
上記のコードは完全に正常に動作している間、私はGulp watch
からエラーを取得しています:
line 67, col 30, Don't make functions within a loop. (W083)
1 error
だから、まったく同じ動作を期待しながら、どのように私はループとAJAX呼び出しを切り離すのですか?私はあなたがforループを削除し、Array.forEach https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
の使用を開始することができると思う
移動に変更する必要がありますループの前の関数...名前またはvar名を与え、リテラルの代わりにその名前を使用します。グローバルを見ることができ、動的に渡されるので、配置は重要ではありません。あなたはリテラルをこの文字列 'numberOfKids.add'または最悪の場合の' numberOfKids.add.bind(numberOfKids) 'で置き換えることさえできるかもしれません。 – dandavis