【问题标题】:Return undefined value outside the loop在循环外返回未定义的值
【发布时间】:2021-03-29 02:31:52
【问题描述】:

我正在使用 for 循环来检查我之前读过的查询,在我将错误的查询添加到地图并返回地图后,我收到了“未定义”。 我正在使用异步函数,但它没有帮助。

这是函数:

async function validateQueryResult(connection, queries) {
var result;
var alertsList = new Map();

return new Promise((resolve, reject) => {
    for (query in queries) {
        connection.execute({
            sqlText: queries[query]["query"],
            complete: function (err, stmt, rows) {
                if (err) {
                    console.error('Failed to execute query ' + queries[query]["query"] + ' due to the following error: ' + err.message);
                }
                else {
                    rows[0].toString();
                    result = Object.values(rows[0]);
                    if (result[0] > 0) {
                        alertsList.set(queries[query], result[0]);
                    }
                }
            }
        });
    }
   resolve(alertsList);
})

}

感谢您的帮助!

【问题讨论】:

    标签: node.js async.js


    【解决方案1】:

    您的问题是,connection.execute() 是另一个异步调用。并且您的 for 循环在任何预期答案返回之前完成。试试这个方法:

    async function validateQueryResult(connection, queries) {
      var result;
      var alertsList = new Map();
     
      return new Promise((resolve, reject) => {
         for (query in queries) {
               const result = await this.execute(query);
    
               if (result && result[0] > 0) {
                   alertsList.set(queries[query], result[0]);
               }
         }
        resolve(alertsList);
      })
    }
    
    
    async function execute(query) {
       connection.execute({
          sqlText: queries[query]["query"],
          complete: function (err, stmt, rows) {
          
          if (err) {
             console.error('Failed to execute query ' + queries[query]["query"] + ' due to the following error: ' + err.message);
           }
           else {
               rows[0].toString();
               return Object.values(rows[0]);
           }
          }
    
       });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 2012-11-29
      • 2016-06-19
      • 2013-02-19
      相关资源
      最近更新 更多