【问题标题】:Async /await confusion异步/等待混乱
【发布时间】:2020-09-14 13:49:54
【问题描述】:

在这段代码中,我试图查看用户迄今为止发布的所有文章。每当用户创建新文章时,我都会动态添加列。所以我创建了一个数组来仅存储稍后的文章应该在 ejs 文件上呈现。

    app.get('/users/article/feed',checkAuthenticated,(request,response)=>{
    let articleArray=[]

    const sql="SELECT noOfArticles FROM Articles WHERE id=?"
    db.query(sql,[request.user.id], async (err,result)=>{
      if(err) throw err
      let noOfArticles=result[0].noOfArticles
      let promise=new Promise((resolve,reject)=>{
         for(let i=1;i<=noOfArticles;i++){
            const sql1="SELECT ?? FROM Articles WHERE id=?"
            let index='article'+i
            db.query(sql1,[index,request.user.id],(err,result)=>{
               if(err) throw err
               articleArray.push(result[0][index])
            })
            if(articleArray.length===noOfArticles){
               resolve(articleArray);
              }

         } //end of for loop

        })//end of promise function

         let resultFinal=await promise;
       console.log(resultFinal)

        })

        response.render('viewArticles',resultFinal)
       })

我猜异步等待部分有一些错误。 resultFinal 没有记录。我该如何解决这个问题

【问题讨论】:

标签: mysql node.js express asynchronous async-await


【解决方案1】:

从我的角度来看,您在回调中使用回调,这很难理解,我将发布您的代码重构也许可以帮助您弄清楚发生了什么

app.get('/users/article/feed', checkAuthenticated, async (request, response) => {
  let articleArray = []

  const sql1 = 'SELECT noOfArticles FROM Articles WHERE id=?'
  const result1 = await db.query(sql1, [request.user.id])

  let noOfArticles = result1[0].noOfArticles

  for (let i = 1; i <= noOfArticles; i++) {
    const sql2 = 'SELECT ?? FROM Articles WHERE id=?'
    let index = 'article' + i
    const result2 = await db.query(sql1, [index, request.user.id])

    articleArray.push(result2[0][index])
  } //end of for loop


  let resultFinal = articleArray
  console.log(resultFinal)

  response.render('viewArticles', resultFinal)
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多