【问题标题】:how to wait until the function has completed running (for loop) in node如何等到函数在节点中完成运行(for循环)
【发布时间】:2021-11-29 13:28:55
【问题描述】:

现在的问题是 for 循环会立即循环所有内容 但我希望它在循环之前等待, 因为 evetime 循环运行它会将数据插入数据库(这需要时间) 所以我希望它等到数据被插入 然后增加 i 的值并再次循环

function insert_into_db(){
  for (let i = (howmuch/dueAmount);i>0;i--){

    clientChartArray = [aa1,bb1,(cc1*i),dd1,ee1,ff1,gg1,hh1] 
    PreviousChangesArray = [a1,b1,c1,d1,rowid]

    if(check_bal){  
      clientChart.run(`UPDATE hp2269 SET RD = ?, DL = ?, BA = ?, RA = ?  WHERE rowid = ? ;`,PreviousChangesArray,(err)=>{
        if(check_reminder == false){ 
          chartInsert(clientChartArray)
        }
      })
    }else{
      chartInsert (clientChartArray)
    }
    
  }  
}

它带来的问题

  1. 某些插入需要的时间比其他插入要长
  2. 所以循环不会等待它们,而是继续下一次插入
  3. 所以条目 GET JUMBLED 并且不要按顺序插入
  4. 最后插入的行也用于不同的函数,因此它必须准确才能获得所需的结果

我实际上是使用数据库的新手,所以我不知道我是否做错了,或者我的代码中是否存在根本问题,所以请考虑帮助我解决 TQ

【问题讨论】:

    标签: javascript sql node.js for-loop async-await


    【解决方案1】:

    在 for 循环中,您可以等待插入完成。 请注意,这不适用于需要回调的循环,包括 forEach、map、filter 和 reduce。

    async function insert_into_db(){
              for (let i = (howmuch/dueAmount);i>0;i--){
            
                clientChartArray = [aa1,bb1,(cc1*i),dd1,ee1,ff1,gg1,hh1] 
                PreviousChangesArray = [a1,b1,c1,d1,rowid]
            
                if(check_bal){  
                  let result = await clientChart.run(`UPDATE hp2269 SET RD = ?, DL = ?, BA = ?, RA = ?  WHERE rowid = ? ;`,PreviousChangesArray);
                   if(check_reminder == false){ //or check result
                      await chartInsert(clientChartArray)
                      //do something
                    }
                }else{
                  await chartInsert (clientChartArray)
                  // do something
                }
                
              }  
            }
    

    【讨论】:

    • 它不工作,因为它包含一个回调函数,是否可以只使用 settimeout 来延迟 nexr 循环
    • @docpinocchio 我已经更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 2015-12-22
    • 2021-07-14
    • 2020-04-01
    • 1970-01-01
    相关资源
    最近更新 更多