为什么循环只返回最后一个值?
有人可以帮助我在body {
font: normal 14px Verdana;
}
h1 {
font-size: 24px;
}
h2 {
font-size: 18px;
}
#sidebar {
float: right;
width: 30%;
}
#main {
padding-right: 15px;
}
.infoWindow {
width: 220px;
}
<title>MAP itinéraire </title>
<meta charset="utf-8">
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
<body onload="init();">
<form id="services">
Location: <input type="text" id="start" value="Midar" /> Destination:
<select id="destination" onchange="calculateRoute();"></select>
<input type="button" value="clear map" onclick="toggleMarkers();" />
</form>
<section id="sidebar">
<div id="directions_panel"></div>
</section>
<section id="main">
<div id="map_canvas" style="width: 70%; height: 750px;"></div>
</section>
</body>
答案 0 :(得分:2)
您在每次迭代时隐式分配和重新分配全局变量records
。因此,到异步查询开始时,主线程已经结束,records
仍然是它被分配的最后一个值。
使用const
声明它,以确保每次迭代都有新的绑定。
此外,没有必要声明一个数组,然后立即对其进行解构以选择第一个元素 - 而只需将records
声明为具有两个项目的一维数组:
tableau.forEach(function(obj) {
for(let i = 0; i < obj.produits.length; i++) {
let bd_nom = obj.produits[ii].nom
let bd_description = obj.produits[ii].description
let bd_titre = obj.titre
const records = [bd_nom, bd_description, bd_titre]
con.connect(function(err) {
let sql = "INSERT INTO scrapeded (nom, text, titre) VALUES ?";
con.query(sql, records, function (err, result) {
console.log(result)
console.log("Nombre de rangée affectée : " + result.affectedRows)
console.log("Nombre d'enregistrement affectée avec avertissement : " + result.warningCount)
console.log("Message du serveur mySQL : " + result.message)
})
})
}
})