这是我的脚本:
var j = schedule.scheduleJob('*/5 * * * * *', function(){
var steamids = [];
con.query("SELECT * FROM counterStrikeGlobalOffensive", function (err, rows) {
for (var i = 0; i < rows.length; i++) {
steamids.push(rows[i].steam64ID);
}
//const steamIDs = ["2342342341234123", "23423412341234", "2342314123423"]; // Steam IDs to check
eachSeries(steamids, (steamID, callback) => {
CSGOCli.playerProfileRequest(CSGOCli.ToAccountID(steamID));
CSGOCli.on("playerProfile", function(profile) {
console.log(JSON.stringify(profile, null, 2));
callback();
});
}, (err) => {
// error thrown = set, else we're done
});
});
});
当我使用常量steamID时,它工作得很好,但是当我使用steamids时,它会给我一个错误。(我会解释)......
当我这样做时,console.log(steamids);它给我这个
[ '76561198152643711', '76561198213530057' ]
和steamIDs是
const steamIDs = ["2342342341234123", "23423412341234", "2342314123423"];
因此它与常量SteamID几乎相同,但常量为&#34; &#34;这些数字不应该是为什么它不起作用,但也许我错了?
另外,我有回调()但是如何让它停止给我一个错误 错误:已经调用了回调。
请询问任何其他信息:)
答案 0 :(得分:0)
您获得Error: Callback was already called.
因为CSGOCli.on()
被多次执行。所以它调用一次回调,之后事件再次触发。所以回调再次被调用,但它应该只被调用一次。
对于简单的复制,请参阅此示例:
async.eachSeries([1, 2, 3], (data, callback) => {
console.log("Data:", data);
for(let i = 0; i < 2; i++) {
callback();
}
},
(err) => {
console.log("Callback: ", err);
});
但是如果你在回调之前添加return,就像这样:return callback();
,那么问题就会消失,因为函数将返回,并且不会再次调用回调。
因此,请将您的代码更改为此代码并查看其是否有效:
CSGOCli.on("playerProfile", function(profile) {
console.log(JSON.stringify(profile, null, 2));
return callback();
});