Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第一行完成后,如何开始下一行?_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 第一行完成后,如何开始下一行?

Javascript 第一行完成后,如何开始下一行?,javascript,mysql,node.js,Javascript,Mysql,Node.js,我想从CS:GO GC发送和接收一些信息,用我当前的脚本一次发送所有请求,但我希望在这些请求之间有一些延迟(可能是1000-2000ms),以便每个请求都能通过 最好的方法是,行正在启动,当它获得请求的数据时,第二行正在启动。。。等等 我当前的代码如下(简化了一点): 我会将回调风格的函数转换为promise风格,并使用async/await。同样地,在promise中包装setTimeout,并使用它来添加中间的等待 async function requestPlayersProfile(S

我想从CS:GO GC发送和接收一些信息,用我当前的脚本一次发送所有请求,但我希望在这些请求之间有一些延迟(可能是1000-2000ms),以便每个请求都能通过

最好的方法是,行正在启动,当它获得请求的数据时,第二行正在启动。。。等等

我当前的代码如下(简化了一点):


我会将回调风格的函数转换为promise风格,并使用
async/await
。同样地,在promise中包装
setTimeout
,并使用它来添加中间的等待

async function requestPlayersProfile(SteamID64) {
  return new Promise((resolve, reject) => {
    csgo.requestPlayersProfile(SteamID64, function(ranking) {
      resolve(ranking);
    });
  });
}

async function wait(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

pool.getConnection(function(err, connection) {
  if (err) throw err;
  connection.query("SELECT * FROM Users WHERE SteamID64 IS NOT NULL", async function(
    err,
    rows,
    fields
  ) {
    connection.release();
    if (err) throw err;
    for(const row of rows) {
      const ranking = await requestPlayersProfile(ow.SteamID64);
      var rankid = ranking.ranking.rank;
      var wins = ranking.ranking.wins;
      var private = ranking.player_level;

      console.log("=================================");
      console.log("SteamID: " + `${row.SteamID64}`);
      console.log("Rank: " + rank);
      console.log("Wins: " + wins);
      console.log("Private Rank: " + private);
      console.log("=================================");

      await wait(1000);
    }
  });
});


当我尝试运行它时,我得到了这个错误:const ranking=await requestPlayersProfile(row.SteamID64);SyntaxError:await仅在异步函数中有效您需要将其包装为异步函数。添加这个
pool.getConnection(异步函数(err,connection){
async function requestPlayersProfile(SteamID64) {
  return new Promise((resolve, reject) => {
    csgo.requestPlayersProfile(SteamID64, function(ranking) {
      resolve(ranking);
    });
  });
}

async function wait(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms);
  });
}

pool.getConnection(function(err, connection) {
  if (err) throw err;
  connection.query("SELECT * FROM Users WHERE SteamID64 IS NOT NULL", async function(
    err,
    rows,
    fields
  ) {
    connection.release();
    if (err) throw err;
    for(const row of rows) {
      const ranking = await requestPlayersProfile(ow.SteamID64);
      var rankid = ranking.ranking.rank;
      var wins = ranking.ranking.wins;
      var private = ranking.player_level;

      console.log("=================================");
      console.log("SteamID: " + `${row.SteamID64}`);
      console.log("Rank: " + rank);
      console.log("Wins: " + wins);
      console.log("Private Rank: " + private);
      console.log("=================================");

      await wait(1000);
    }
  });
});