![](/img/trans.png)
[英]How can I disable a getJSON request if it hasn't completed in one second and move onto the next one?
[英]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.