0
我有這樣的代碼JavaScript文件:在javascript函數中需要幫助db.transaction ....是否有延遲?
function getProvincialStandardForRace(seedAge, seedGender, seedCourse, seedDistance, seedEvent) {
var seedAge;
var seedGender;
var seedCourse;
var seedDistance;
var seedEvent;
// Declare SQL database variables
var shortName = 'SwimChamp';
var version = '1.0';
var displayName = 'SwimChamp';
var maxSize = 5*1024*1024;
var db = openDatabase(shortName, version, displayName, maxSize);
db.transaction (
function(transaction) {
transaction.executeSql(
'SELECT * FROM standards WHERE (age=? AND gender=? AND course=? AND distance=? AND event=?);',
[seedAge, seedGender, seedCourse, seedDistance, seedEvent],
function(transaction, result) {
localStorage.standardRetrieved = result.rows.item(0)['provstandard'];
console.log(localStorage.standardRetrieved);
}
);
}
);
console.log(localStorage.standardRetrieved);
}
爲什麼第二console.log
,在一個db.transaction
之外,其實我的成功函數內console.log
之前執行?
我完全困惑。看起來執行db.transaction
有延遲,db.transaction
執行後的代碼最後執行db.transaction
。
謝謝@joekarl - 我一直難住!所以我的問題是函數返回到一箇舊值的網頁,然後新的值是異步發現,但爲時已晚。所以我最終看到一箇舊值返回給用戶。你可以請建議一個修復程序,以便該函數返回最新值? – AlanW 2011-06-11 10:53:18
我試過設置一個變量= 0,然後只有在executeSql函數成功時才設置爲1。然後,我在我的.html頁面上嘗試了一個for循環,等到現在我的html頁面掛起,並且Safari瀏覽器說有一個緩慢的腳本。我把它看着,一切都在運行,但是由於異步問題而不正確。幫幫我!? – AlanW 2011-06-11 17:22:29