Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按照代码顺序执行javascript代码_Javascript_Google Chrome - Fatal编程技术网

如何按照代码顺序执行javascript代码

如何按照代码顺序执行javascript代码,javascript,google-chrome,Javascript,Google Chrome,我正在开发一个chrome扩展,我需要从一个页面读取信息,将数据插入数据库表,然后转到下一个页面并执行相同的操作 问题是,插入数据的函数(使用ajax)在移动到下一页之前会在45行中插入6行,这意味着我们正在移动到下一页,而没有插入其余的数据 我希望它做的是遵守代码顺序,将所有行插入数据库,然后转到下一页。 代码如下: 用于(一个国家的英语教学){ var t=elt.getElementsByClassName('annonce_titre'); 如果((英语教学id!=''){ //cons

我正在开发一个chrome扩展,我需要从一个页面读取信息,将数据插入数据库表,然后转到下一个页面并执行相同的操作

问题是,插入数据的函数(使用ajax)在移动到下一页之前会在45行中插入6行,这意味着我们正在移动到下一页,而没有插入其余的数据

我希望它做的是遵守代码顺序,将所有行插入数据库,然后转到下一页。 代码如下:

<代码>用于(一个国家的英语教学){ var t=elt.getElementsByClassName('annonce_titre'); 如果((英语教学id!=''){ //console.log(().getElementsByTagName('a')[0].href); 设titleH2=t[0].getElementsByTagName('h2'); 设titleLink=t[0].getElementsByTagName('a'); var url=titleLink[0]。href; var title2=titleH2[0].innerHTML; var last_item=0; var w=elt.getElementsByClassName('titre_wilaya')[0].innerHTML; 控制台日志(w); var wilaya=w.子串(w.长度-2,w.长度); log(“leg0 leng”+(w.length-2)+“**”+w.length) console.log(“wilaya”+wilaya) if(isNumber(wilaya)){ var city=w.子串(0,w.长度-4); }否则{ var city=w; 维拉亚=16; } 控制台日志(“w c”+wilaya+“**”+城市) var num=(elt.id).substring(4,20) //在页面加载之间添加5秒的延迟 var记录器=设置间隔(lognextitle,10); 变量插入=[ [标题2,维拉亚,城市,url,数字] ]; 试验=试验混凝土(插入件); console.log('testspead'); $.ajax({ 数据:{ 链接:url, h2:标题2, 字段:“自动”, 最后:最后一项, 数字:数字, 维拉亚:维拉亚, 城市:城市,, 项目:测试 }, 类型:“post”, url:“http://localhost/insert.php", 成功:功能(数据){ console.log(“数据保存:”+数据); } }); } } //窗口。打开(第一个链接“自我”); console.log(“第一个链接”+第一个链接) 这段代码的作用是循环遍历数组的所有元素,使用ajax将数据插入数据库,然后移动到下一页。


此控制台显示,代码中的“first_link”回显在插入代码之后,但后面的回显在回显之后执行。javascript中有一个错误顺序,异步调用的基础是它们启动,代码继续。您的代码的问题在于,您假设它们都已完成,但它们仍在排队等待生成。所以你需要等待他们全部完成,然后再去做。承诺会让这更容易做到。所以请看一下使用jQuery的when

var ajaxCalls = []
for (elt of an) {
  ...
  ajaxCalls.push($.ajax({...}))
}
$.when.apply($, ajaxCalls).then( function () { console.log('done'); } );
// $.when(...ajaxCalls).then( function () { console.log('done'); } );

在你的代码中,下一页在哪里?窗口。打开(第一个链接,“自我”);它只是为了测试而被注释掉了我不确定问题是什么?您是在问为什么45项中只有6行,还是在问为什么订单不正确?这两项的含义相同。如果它没有在控制台日志之后执行代码。我们会在同步101之前完成所有的插入。。。。。你打电话,而不是等待他们完成。我永远不会忘记我学到的那一天;还有异步/等待选项。我会试试看,然后告诉你