事务回调多次触发

时间:2013-01-22 08:48:40

标签: javascript sqlite cordova transactions callback

今天我的应用程序遇到了一些非常奇怪的行为: 我有这个函数来创建表,然后,当成功时,继续在代码中。

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 Callback函数被调用了8次。这是为什么?我已经使用这个代码几个月了,从来没有遇到过这个问题。有没有人碰到类似的东西呢?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

可能,您添加了一些调用该函数几次的代码。可能发生的是,由于该函数是异步的,如果您遍历它或运行连续调用该函数的代码,该代码将不会阻塞并等待您的函数完成执行。相反,它会被多次调用而不知道它为什么会发生。

您是否碰巧编写测试以解决问题,以便了解哪些内容已被破坏?