2013-10-19 24 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解释它。