2016-04-06 29 views
-1

REST çağrılarını kullanarak bazı verileri toplama üzerinde çalışıyorum.Bir döngü içinde bir işlev oluşturmaktan nasıl kaçınılır?

Ben onların çocukları hakkında daha fazla bilgi alabilirsiniz beni insanlar

listesini döndürür bir "dizin" bitiş noktasına çağrı yapar aşağıdaki işlevi var.
Şimdi kişisel bilgilerini almak için bireysel API'lerini vurmak zorunda kalacağım. Yukarıdaki kod mükemmel çalışıyor iken

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); 
          }); 
        } 
       } 
      }); 

, ben Gulp watch bir hata alıyorum:

line 67, col 30, Don't make functions within a loop. (W083) 
1 error 

Yani, nasıl döngü ve AJAX çağrısı ayıracak mı tam aynı davranışı bekler?

+0

hareket için değiştirilmesi gereken tüm son tarayıcıları destekler Array.forEach döngü kaldırmak ve kullanmaya başlayabilirsiniz düşünüyorum döngüden önce işlev ... ona bir ad veya var adı verin ve bunu literal yerine kullanın. Küresel görebildiğinden ve dinamikten geçtiğinden, yerleşimin önemi yoktur. Hatta bu literal 'numberOfKids.add' ya da en kötü durum 'numberOfKids.add.bind (numberOfKids)' ile değişkeni değiştirebilirsiniz. – dandavis

cevap