首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取循环js的值brefore

读取循环js的值brefore
EN

Stack Overflow用户
提问于 2021-11-03 10:19:36
回答 1查看 32关注 0票数 0

我想在for循环之后返回值,但由于某种原因,我在循环之前读取值

代码语言:javascript
复制
client.on('friendMessage', (steamID, message) => {
  var cmd;
  if(cmd = message.match(/^!amount (\D+)/)) {
    var item_idz = cmd[1];
    console.log(amnt(item_idz))
  }
});
代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2021-11-03 11:05:05

console.log显示回调,因为您在javascript事件堆栈中使用undefinedamnt追加,直到该过程完成

另一方面,函数amnt不返回任何内容,这会导致您执行回调函数而不返回任何内容

您可以尝试使用以下代码来打印数据:

代码语言:javascript
复制
if(cmd = message.match(/^!amount (\D+)/)) {
  var item_idz = cmd[1];
  amnt(item_idz, (error, data) => console.log(data));
}
代码语言:javascript
复制
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);
      }
    }
  });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69823153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档