2013-01-08 81 views
1

因此,使用parse.com,我正在做一些嵌套查詢...基本上,獲取一個對象,然後檢索它的關係並執行一些操作。將值傳遞給嵌套的parse.com查詢回調

  pageQuery.find({ 
      success: function (results) { 
       var pages = []; 

       for (var result = 0; result < results.length; result++) { 
        var resArrayLength = pages.push(results[result].toJSON()); 
        var indexOfLastPush = resArrayLength - 1; 
        console.log("resArrayLength = " + resArrayLength); 
        pages[indexOfLastPush].scrapeRules = new Array(); 
        console.log("index of last push set to " + indexOfLastPush); 
        var relation = results[result].relation("RulesForPage"); 
        //get the related scrape rules 
        relation.query().find({        
         success: function (rules) { 
          console.log("Found " + rules.length + " rules"); 
          for (var i = 0; i < rules.length; i++) { 
           console.log("rule index = " + i); 
           console.log("Found rule " + rules[i].id); 
           pages[indexOfLastPush].AllRules = new Array(); 

           pages[indexOfLastPush].scrapeRules.push(rules[i].id); 
           console.log("pushed rule " + rules[i].get("name") + " to page at index " + indexOfLastPush); 
          } 
         } 

        }); 
       } 

我看到的問題是,我想indexOfLastPush跟蹤我需要一個數組的索引,但該值已經由回調已經發生的時間而改變。

如何將它傳遞給「成功」回調,以便我有我需要的索引?

更新:感謝@cggaurav的優秀提示。爲什麼看起來每個JavaScript問題的答案都是將您的代碼封裝在一個匿名函數中?

回答

2

您必須爲每個您所做的關係。查詢()創建所謂的閉包或匿名函數。請參閱「關於詞法範圍的更多信息」| http://mark-story.com/posts/view/picking-up-javascript-closures-and-lexical-scoping

+1

感謝您的回覆......在閱讀文章時,我很難想象如何實施該解決方案。我能否給你一些(僞)代碼給我指出總體方向? – seanicus

+1

(函數(索引) {0}使用'index'在這裏執行relation.query() })(indexOfLastPush); – cggaurav

+0

ahhhhhh .... gotcha。謝謝您的幫助! – seanicus