.each循环没有完全执行...为什么? (代码和日志可用)

时间:2012-01-10 17:57:45

标签: javascript jquery

var idd;

$.each(data, function (i, items) { //1st each
    $.each(items, function (j, item) { // 2nd each
        console.log("Field:" + j + " Value:" + item);

        if (j=="sha_id"){ idd=item; }

    });
    console.log("Items");
    console.log("ID:" + idd);

    db.transaction(function (tx) {
        console.log("being inserted");
        console.log("ID Inserting:" + idd);
        //then some database insertion query

这是示例上部脚本

基本上第1个。每个将运行2轮和第2轮。每个第1轮将运行两轮。每个。

所以在控制台日志中我希望看到
田地....价值
字段.....值
项目
ID:2
被插入 ID插入:2
田地....价值
字段.....值
项目
ID:3
被插入 ID插入:3

但我得到的是这个

字段....值
字段.....值
项目
ID:2
田地....价值
字段.....值
项目
ID:3
被插入 ID插入:3
被插入 ID插入:3

为什么我的db.transaction最初没有在console.log(“Items”)之后执行,因为它们在同一个循环中。我应该纠正任何代码错误吗?

1 个答案:

答案 0 :(得分:0)

据推测,db.transaction是异步的。

这意味着$.each循环继续运行,并且不等待db.transaction完成。

db.transaction最终完成时,会调用您给它的回调。在$.each循环结束后很长时间(相对)

故事的寓意是,任何等待db.transaction完成的代码都必须在你传递的db.transaction回调中调用。