簡體   English   中英

第一行完成后如何開始下一行?

[英]How can I start the next row after the first one is completed?

我想從 CS:GO GC 發送和接收一些信息,使用我當前的腳本一次發送所有請求,但我希望在這些請求之間有一些延遲(可能是 1000 - 2000 毫秒),以便每個請求都通過。

最好的方法可能是該行開始,當它獲得它請求的數據時,第二行開始......等等。

我當前的代碼看起來像這樣(稍微簡化了一點):

    pool.getConnection(function(err, connection) {
      if (err) throw err;
      connection.query("SELECT * FROM Users WHERE SteamID64 IS NOT NULL", function (err, rows, fields) {
        connection.release();
        if (err) throw err;
        rows.forEach( (row) => {

      //Request Data from CS:GO
      csgo.requestPlayersProfile(SteamID64, function(ranking) {
          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("=================================");
      });
    });
  });
});

我會將回調樣式函數轉換為 promise 樣式並使用async/await 類似地將setTimeout包裝在 promise 中,並使用它在兩者之間添加等待

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);
    }
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM