For 循环 - SyntaxError: await 仅在异步函数中有效

贾尔斯·亨特

我对 NodeJS 相当陌生,我正在努力了解这里发生的事情以及为什么我收到错误:“SyntaxError: await is only valid in async function” for await doScrape(results[i].productUrl);

我查看了其他示例,但仍然无法发现问题所在。非常感谢任何帮助。谢谢。

const mysql = require('mysql');
const axios = require('axios');

async function doScrape(url) {
  try {
    console.log('scraping');
    const response = await axios.get('https://###########.com/dev?url=' + url);
    console.log(response.status);
    console.log(response);
  } catch (error) {
    console.error(error);
  }
}

module.exports.dailyScraperScheduler = async (event) => {

  var con = mysql.createConnection({
    host: "#####",
    user: "#####",
    password: "#####",
    database: "####"
  });

  let sql = 'SELECT productUrl FROM ######### ppw INNER JOIN products \
             p ON p.productId = ppw.productId WHERE IFNULL(ppw.lastUpdated,CURDATE() \
             - INTERVAL 1 DAY) < CURDATE()' 

  let getProducts = async (sql, params,results) => {
    return new Promise((resolve, reject) => {
        con.connect((err, connection) => {
            con.query(sql, params, (err, results) => {
                if (err){
                    reject(err);
                }
                resolve(results);
            });
        });
    });
  };
  
  await getProducts(sql)
  .then(function (results) {
    for (var i = 0; i < results.length; i++) {
      console.log(results[i].productUrl);
      await doScrape(results[i].productUrl);
    };
  });
};
索罗什·安萨里米尔

最好不要将“then”与“async/await”结合使用。编写该代码的更正确方法是这样的:

const results = await getProducts(SQL);
  
for (var i = 0; i < results.length; i++) {
   console.log(results[i].productUrl);
   await doScrape(results[i].productUrl);
};
  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SyntaxError:super()仅在派生类构造函数中有效

Javascript:SyntaxError:等待仅在异步函数中有效

await仅在异步功能中有效-异步中的eval

module.exports SyntaxError:等待仅在异步函数中有效

module.exports SyntaxError:等待仅在异步函数中有效

SyntaxError:当使用Node JS连接到Mongo DB时,await仅在异步功能中有效

Await仅在使用Node.js的异步函数中有效

for循环中的“ await仅在异步函数中有效”

带伪造者的Web爬网循环:“等待仅在异步功能中有效”

未捕获的 SyntaxError:await 仅在 async 函数中的 async 函数中有效

给出 await 的异步函数仅在异步函数中有效

Google Cloud / Firebase 函数:await 仅在异步函数中有效

SyntaxError:await 仅在带有 Apify Metamorph 的异步函数中有效

即使等待位于 Node.js 中的异步函数中,如何修复“await 仅在异步函数中有效”?

Sails.js SyntaxError:await 仅在异步函数中有效

SyntaxError:“await”仅在“async”函数中有效 - 需要帮助

await 仅在异步函数 discord.js 中有效

“await 仅在异步函数中有效” discord.js

await 总是抛出 SyntaxError: await 仅在 sequelize 的异步函数中有效

`SyntaxError:await 仅在异步函数中有效`,同时尝试在 node rest api 中注册用户

await 仅在异步函数 Discord bot 反应角色中有效

“await 仅在异步函数中有效”,而它是一个异步函数

ASYNC / AWAIT SyntaxError:await 仅在异步函数和模块的顶级主体中有效

SyntaxError:await 仅在 async 函数中有效,但 async 已包含在内

获取 SyntaxError: await 仅在异步函数和模块的顶层主体中有效,同时通过 discord.js 指南工作

await 仅在异步函数和模块的顶层主体中有效 javascript express error

控制台错误:await 仅在异步函数和模块的顶层主体中有效

SyntaxError: await 仅在异步函数和模块的顶层主体中有效。不和谐,js

Javascript 函数 await 仅在异步函数中有效