簡體   English   中英

訪問WebSQL函數中的變量

[英]Accessing variable inside WebSQL Function

我使用以下代碼

var Year12=new Array();

GetYear(function(Year12) 
{
alert(Year12);
});

   function GetYear(callback) 
     {

       var selectAllStatement = "SELECT DISTINCT year FROM mytable";
       var db = openDatabase("Postit", "1.0", "Notebook", 200000);
       var dataset;
       alert("1");
       db.transaction(function(tx) {
       alert("2");

           tx.executeSql(selectAllStatement, [], function(tx, result) 
           {
           alert("3");
          dataset = result.rows;

          for (var i = 0, item = null; i < dataset.length; i++)
           {

                 item = dataset.item(i);
                 Year12[i]=item['year'];

           }
          callback(Year12);
       });
     });
    }

這里沒有執行tx.executeSql語句意味着警報3沒有顯示。有沒有辦法做到這一點

db.transactiontx.executeSql調用是異步的,因此是回調函數。 這意味着GetYear將在tx.executeSql回調填充Year12數組之前完成執行並返回。

一旦你有異步行為和回調,唯一明智的解決方案當然是更多的回調。 你需要一個更像這樣的結構:

function GetYear(callback) {
    //...
    db.transaction(function(tx) {
        //...
        tx.executeSql(selectuniqueyearStatement, [], function(tx, result) {
            var Year12 = [ ];
            //... populate the locale Year12 using result.rows
            callback(Year12);
        });
    });
}

然后像這樣使用它:

GetYear(function(year12) {
    // Do whatever you need to do with the year12 array...
});

基本上與AJAX調用使用的代碼結構和策略相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM