2013-01-22 79 views
4

我今天遇到了一些非常奇怪的應用程序行爲: 我有這個函數來創建表,然後,當成功時,繼續執行代碼。多次觸發事務回調

db.transaction(function (tx) { 
    tx.executeSql('CREATE TABLE IF NOT EXISTS newsDetail(id unique, title, text, created, createdTS, imageSmall, imageBig, facebook, gameNumber)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS lastModified(id unique, ts)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS teams(pos unique, name, games, gd, points, s, snv, gl, glo, goals)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS players(number unique, name, nickname, birthdate, height, married, children, profession, clubs, position, image)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS games(id unique, home, away, score, date, shortDate)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS galleryCategories(id unique, name, date, thumb, ordering)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS galleryImages(id unique, url, description, catid, ordering)'); 
    tx.executeSql('CREATE TABLE IF NOT EXISTS videos(id unique, url, title, image)'); 
}, errorCB, function() { 
    loadData('newslist', createNewslist, true); 
    loadData('refresh', loadNewOnes, true); 
}); 

現在的問題是,Succes回調函數被調用8次。這是爲什麼?我已經使用這段代碼幾個月了,以前從未遇到過這個問題。有沒有人遇到類似的事情呢?任何幫助表示讚賞。

回答

0

可能,您添加了幾次調用該函數的代碼。可能發生的情況是,因爲該函數是異步的,所以如果循環它或運行連續調用該函數的代碼,那麼該代碼將不會阻塞並等待函數完成執行。相反,它會被多次調用,而不知道它爲什麼會發生。

你是否碰巧編寫了測試來圍繞這個問題,以便你知道什麼被打破了?