我想在for循环之后返回值,但由于某种原因,我在循环之前读取值
client.on('friendMessage', (steamID, message) => {
var cmd;
if(cmd = message.match(/^!amount (\D+)/)) {
var item_idz = cmd[1];
console.log(amnt(item_idz))
}
});function amnt(item_idz,steamID) {
manager.getUserInventoryContents("[U:1:1227885041]", 440, 2, true, (err, inventory) => {
if(err) {
console.log("coś sie zepsuć");
} else {
var ew = 0;
for(var p = 0; p< inventory.length; p++) {
if(inventory[p].name == item_idz) {
ew++;
console.log(ew)
}
}
if(steamID != null) {
client.chatMessage(steamID, ew.toString());
} else {
return ew;
}
}
});
}输出:7656119884397* said !amount Crimson Cache Case undefined 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
发布于 2021-11-03 11:05:05
此console.log显示回调,因为您在javascript事件堆栈中使用undefined和amnt追加,直到该过程完成
另一方面,函数amnt不返回任何内容,这会导致您执行回调函数而不返回任何内容
您可以尝试使用以下代码来打印数据:
if(cmd = message.match(/^!amount (\D+)/)) {
var item_idz = cmd[1];
amnt(item_idz, (error, data) => console.log(data));
}function amnt(item_idz, steamID, next) {
manager.getUserInventoryContents('[U:1:1227885041]', 440, 2, true, (err, inventory) => {
if (err) {
console.log('coś sie zepsuć');
} else {
var ew = 0;
for (var p = 0; p < inventory.length; p++) {
if (inventory[p].name == item_idz) {
ew++;
console.log(ew);
}
}
if (steamID != null) {
client.chatMessage(steamID, ew.toString());
next(null);
} else {
next(null, ew);
}
}
});
}https://stackoverflow.com/questions/69823153
复制相似问题