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

.each loop are not executed completely ... why ? ( code and log available )

本文关键字:代码 日志 为什么 执行 循环      更新时间:2023-09-26

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

这是的上半部分脚本示例

基本上第一名。每个人将进行2轮比赛,第二名。每个将进行两轮比赛

因此,我希望在控制台日志中看到
领域值
领域值
项目
ID:2
正在插入
ID插入:2
领域值
领域值
项目
ID:3
正在插入
ID插入:3

但我得到的是这个

字段。。。。值
领域值
项目
ID:2
领域值
领域值
项目
ID:3
正在插入
ID插入:3
正在插入
ID插入:3

为什么我的db.transaction一开始不在console.log("Items")之后执行,因为它们在同一个循环中。有没有我应该纠正的代码错误?

假定db.transaction是异步的。

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

db.transaction最终完成时,将调用您给它的回调。这种情况发生在$.each循环结束很久之后(相对地)

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