2013-10-19 22 views
0

我是一個試圖學習parse.com api的新手。我可以查詢我的數據庫,我可以在成功處理程序中查詢結果。但是我無法將數據轉化爲此外的變量。我認爲這是因爲它正在對服務器進行調用,如果我嘗試將它分配給查詢函數外的變量,則查詢代碼在執行任何操作之前都不會執行查詢函數之外的變量。parse.com從查詢中獲取數據到變量外的成功函數

更具體地說:我如何得到警報(bitOfData);在myObj被分配給bitOfData之後執行。

function getData(){ 
     var bitOfData = ""; 
     var DB = Parse.Object.extend("DB"); 
     var query = new Parse.Query(DB); 
     query.equalTo("name", "myDatabase"); 
     query.find({ 
      success: function(results){ 
        object = results[0];  
        //alert(object.id); 
        var myObj = object.id; 
        alert(myObj); 
            bitOfData = myObj; 
        }, 
      error: function(error){ 
       alert(error.code);} 
      }); 

    alert (bitOfData); 




} 

getData(); 

回答

1

問題是代碼是異步的,調用find(..)只是開始運行。

我最近聽到的一個很好的例子是煮雞蛋。您撥打find(..)就好像將一個雞蛋煮沸並設置完成時的警報(success功能)。一旦它開始沸騰,你就會在廚房做其他事情。

如果您希望在結束時發生其他事情,那麼您需要將該代碼添加到success處理程序。

更高級的話題是使用「承諾」,在parse.com博客上有一個關於它的blog post解釋它。