Node.js Foreach应该等待下一次迭代,直到wait在节点中执行

Node.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) {

我是NodeJS新手,在使用wait函数时遇到了问题。 For-each应该等待下一次迭代,直到wait在节点中执行。 在下面的代码中,我总是将consumptionSummaryID获取为0,但我希望为case REF的下一次迭代使用数据库插入id

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
肯定不起作用,所以发布它并说它不起作用是没有意义的。没问题,乐意帮忙!