Javascript .每个循环都没有完全执行。。。为什么?(代码和日志可用)
var-iddJavascript .每个循环都没有完全执行。。。为什么?(代码和日志可用),javascript,jquery,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("
$.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轮和第2轮
因此,在控制台日志中,我希望看到领域值
领域值
项目
ID:2
正在插入
ID插入:2
领域值
领域值
项目
ID:3
正在插入
ID插入:3
但我得到的是这个 场。。。。值
领域值
项目
ID:2
领域值
领域值
项目
ID:3
正在插入
ID插入:3
正在插入
ID插入:3
为什么我的db.transaction不在console.log(“项”)之后执行,因为它们在同一个循环中。是否有任何代码错误需要更正?大概是
db。事务是异步的
这意味着$。每个
循环都会继续运行,不必等待db.transaction
完成
当db.transaction
最终完成时,将调用您给它的回调。这种情况(相对地)发生在$之后很久。每个循环都已完成
这个故事的寓意是,任何应该等待db.transaction
完成的代码都必须在您传递的db.transaction
回调中调用。您的数据库事务代码是异步调用吗?是的,它们是异步的:现在就明白了。。。。顺便说一句,你能提示我如何修改我的代码并从该db.transaction调用双循环吗?或者至少让它等待:S@cjmling:嗯,你真的不想让它等待。您只需要习惯于使用异步代码。你有什么理由需要它等待吗?呵呵,我真的不想让它等待:S…实际上它将是大约20-50圈。。所以我不应该让它等待一个android应用程序:S。。。如果它们有不同的功能,那么它很容易处理。。。但这种带有异步代码的双循环让我难以思考:Sok…有一个想法。目前,这些异步代码只会在循环和进程中使用变量,这可能会把事情搞砸,因为存在延迟。。。。。因此,如果我将变量传递给异步代码,它们是否只处理我传递的变量…无论它们在什么时候处理,或者有多少延迟。。。。。或者,再次使用新变量调用异步代码会扰乱第一次调用,因为它们可能尚未完成处理******希望你得到它****我会在早上试试这个:D。。。。Thanks@cjmling当前位置我不知道您在谈论哪些变量。您需要发布一个更完整的代码示例。如果每个外循环都有一个db.transaction
,则每个对事务的回调都可以从外循环访问适当的i
和项
参数。