2012-02-14 44 views
2

我使用Lawnchair保存在JS數據和檢索回我的移動應用程序。Lawnchair JavaScript的數據「得到」沒有讓我進入指定另一個變量

我有這個在我的js文件。

$(document).ready(function() { 

    //Lawchair set up 
    db = Lawnchair({name: 'db'},function(e){ 
     console.log('storage open'); 
    }); 

    //store the 'username' key in storage 
    db.save({key:"username", value: "john"}); 

    var name = "" 
    db.get("username", function(obj){ 
      name = obj.value; 
    }) 

    alert(name); 

}); 

問題是我總是得到名字中的「」。我從來不能在Lawnchair對象的「get」的回調函數中設置任何變量。我錯過了什麼嗎?

任何幫助,將不勝感激。

謝謝。

回答

3

數據庫操作是異步的。將您的警報內部的回調爲「.get()」函數。

作爲一般規則,任何時候你看到一個JavaScript API這樣的:

something(param, param, ... , function(result, result, ...) { 
    // ... 
}); 

這是一個不錯的選擇,該功能可以是異步機制,您提供的回調函數纔會被調用之後當事件實際發生時。在這種情況下,你必須構建自己的代碼,這樣,你需要的活動操作完成在代碼做內回調後執行。

(這並不總是如此,例如一些功能編程API採取函數作爲參數。)

+0

你是正確的關於爲「異步」。但是,每次我需要訪問存儲中的一些數據時,將代碼放入回調中仍然是一個痛苦的過程。我現在正在研究如何在js中等待,直到在異步操作之後設置變量。可能不理想。但仍然需要創建一個getData(「somekey」)方法。謝謝。 – 2012-02-14 15:13:23

+0

通常沒有辦法在客戶端JavaScript中「等待」。 – Pointy 2012-02-14 17:15:19

+0

唯一的辦法就是通過回調。 :) 這就是lawnchair的工作方式.. – ghostCoder 2012-02-15 05:28:34

相關問題