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