暂停javascript数据库查询直到setTimeout完成

时间:2011-06-19 17:46:58

标签: javascript settimeout

我有问题。我正在查询数据库并查看数据库中的每个结果。数据库有2列名称和时间。现在我想要javascript做的是显示该名称为数据库中保存的时间量。我已尝试使用setTimeout()。

从DB中选择后

function (transaction, result) {
for (var i = 0; i < result.rows.length; i++) {
    var row = result.rows.item(i);
    $('div.box').html(row.name);
    var countdown;
    var countdown_number;
    countdown_init();

    function countdown_init() {
        countdown_number = 11;
        countdown_trigger();
    }

    function countdown_trigger() {
        if (countdown_number > 0) {
            countdown_number--;
            document.getElementById('countdown_text').innerHTML = countdown_number;
            if (countdown_number > 0) {
                countdown = setTimeout('countdown_trigger()', row.time);
            }
        }
    }

}

}

现在,我的问题是,我相信,在javascript中使用线程(但我可能错了)。当倒计时开始时,它不会暂停循环的执行,而是在新线程上开始倒计时并在循环中继续调出下一个数据库条目并导致各种错误崩溃。

那我怎么解决这个问题呢?我考虑过添加标志..但我不确定这是如何工作的。我有一种感觉(我希望)有一个直截了当的答案但不确定它是什么。

1 个答案:

答案 0 :(得分:1)

function (transaction, result) {
for (var i = 0; i < result.rows.length; i++) {
    var row = result.rows.item(i);
    $('div.box').html(row.name);
    var countdown;
    var countdown_number;
    countdown_init();

    function countdown_init() {
        countdown_number = 11;
        countdown_trigger();
    }

    function countdown_trigger() {
        if (countdown_number > 0) {
            countdown_number--;
            document.getElementById('countdown_text').innerHTML = countdown_number;
            if (countdown_number > 0) {
                countdown = setTimeout(function(){countdown_trigger();}, row.time);
            }
        }
    }

}
}