2014-06-21 61 views
2
  for (var i = 0; i < reviewsObj.objects.length; i++){ 
      var reviewURL = reviewsObj.objects[i].url; 

      // AT THIS POINT REVIEW URL VARIES 

      Meteor.call("getURL", reviewURL, function(error, results){ 

       AT THIS POINT, REVIEW URL IS ONLY THE REVIEW URL VALUE OF THE LAST OBJECT IN THE ARRAY 
       ... 
      }); 
      } 

所以我的流星方法調用的getURL使用Meteor.http.call GET請求。然而,似乎只要調用Meteor.call("getURL...reviewURL值始終是相同的(在循環中的最後一個值)。在這種情況下,我如何在循環中多次調用Meteor.call?

任何輸入,我怎麼能去解決這個工作將是巨大的。

+0

我看到這個問題越來越downvotes,並會喜歡的解釋呢? – Louis93

+3

@ Louis93可能是因爲這是一個衆所周知的jacascript問題,以前可能有過這樣的問題。請仔細閱讀[for-loops中的JavaScript閉包](http://www.mennovanslooten.nl/blog/post/62)以獲取更多詳細信息。 –

回答

2

嘗試這個循環的現代版:

_.each(reviewsObj.objects, function(reviewObj) { 
    Meteor.call('getURL', reviewObj.url, function(err, res) { 
    ... 
    }); 
}); 
+0

哇這個工作。爲什麼這個工作? – Louis93