Node.js Foreach应该等待下一次迭代,直到wait在节点中执行
我是NodeJS新手,在使用wait函数时遇到了问题。 For-each应该等待下一次迭代,直到wait在节点中执行。 在下面的代码中,我总是将consumptionSummaryID获取为0,但我希望为case REF的下一次迭代使用数据库插入idNode.js Foreach应该等待下一次迭代,直到wait在节点中执行,node.js,async-await,Node.js,Async Await,我是NodeJS新手,在使用wait函数时遇到了问题。 For-each应该等待下一次迭代,直到wait在节点中执行。 在下面的代码中,我总是将consumptionSummaryID获取为0,但我希望为case REF的下一次迭代使用数据库插入id var consumptionSummaryID=0; transaction.otherSegments.forEach(async function(segment){ switch (segment.segment) {
var consumptionSummaryID=0;
transaction.otherSegments.forEach(async function(segment){
switch (segment.segment) {
case 'PTD': let ptdInsertRaw= await con.query('INSERT INTO `consumption-summary` SET ?', ptdInsert);
consumptionSummaryID= ptdInsertRaw.insertId;
case 'REF':
if(consumptionSummaryID!=0){
// having code related to consumptionSummaryID;
}
}
});
请帮忙
提前感谢如果您使用for循环,或使用wait循环,则将按预期工作。在此上下文中不能使用foreach,因为它不会等待异步函数完成 另外,请记住,只能在异步函数中使用wait 在你的情况下,你可以这样做
for(let segment of transaction.otherSegments) {
switch (segment.segment) {
case 'PTD': let ptdInsertRaw= await con.query('INSERT INTO `consumption-summary` SET ?', ptdInsert);
consumptionSummaryID= ptdInsertRaw.insertId;
case 'REF':
if(consumptionSummaryID!=0){
// having code related to consumptionSummaryID;
}
}
}
这也将有助于:
for(let segmentIndex = 0; segmentIndex < transaction.otherSegments.length; segmentIndex++) {
let segment = transaction.otherSegments[segment];
switch (segment.segment) {
case 'PTD': let ptdInsertRaw= await con.query('INSERT INTO `consumption-summary` SET ?', ptdInsert);
consumptionSummaryID= ptdInsertRaw.insertId;
case 'REF':
if(consumptionSummaryID!=0){
// having code related to consumptionSummaryID;
}
}
}
这回答了你的问题吗?我试过了,但是运气不好那么你能给我一点吗
forEach
肯定不起作用,所以发布它并说它不起作用是没有意义的。没问题,乐意帮忙!