2014-05-20 37 views
0

如何訪問executeSql函數之外的url變量? (評論,我想它)如何訪問executeSql函數之外的變量

function generateUrl(id, callBack){ 
    var db = window.openDatabase("Database", "1.0", "Marktplaats", 200000); 
    db.transaction(function (tx) { 

    tx.executeSql('SELECT * FROM searches, settings', [], function (tx, results) { 
     var url = "http://google.nl"; 
    }, null); 

    //I want to access the url variable here 
    }); 
} 
+0

張冠李戴問題。 。? –

+0

爲什麼它被錯誤標記? –

+1

@RajaprabhuAravindasamy :) - WebSQL – CodingIntrigue

回答

1

什麼你建議沒有任何意義,因爲executeSql是異步的。

tx.executeSql('SELECT * FROM searches, settings', [], function (tx, results) { 
    var url = "http://google.nl"; 
    // This is executed 2nd 
}, null); 

//This is executed 1st 
}); 

因此,在您的評論的角度來看,這是不可能的url有一個值。

什麼,你應該做的,是使用callBack參數,您必須通過url返回給調用者:

tx.executeSql('SELECT * FROM searches, settings', [], function (tx, results) { 
    var url = "http://google.nl"; 
    callBack.call(this, url); 
}, null); 

然後就可以調用generateUrl爲:

generateUrl(15, function(url) { 
    // URL is visible now 
    console.log(url); 
}); 
+0

我想添加另一個查詢,並用它的值擴展url變量。我想我只需要這樣調用函數,然後在那裏擴展它。謝謝! –

+1

@SinanSamet你可以絕對做到這一點,但你需要從'executeSql'回調中完成。 – CodingIntrigue

+1

是的,我已經在使用這個功能來達到另一個目的。但我想也許有可能在函數中添加第二個查詢,我不知道executeSql是異步的,謝謝你告訴我:) –