微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Foreach 变量赋值

如何解决Foreach 变量赋值

抱歉,这个问题可能会重复,但我一直在使用 javascript 中的 foreach 循环。

    let fields = temp_deviceAllocation.devices.forEach(async (device) => {
    const fields = await device_model
      .findOne({ device_id: device })
      .select({ fields: 1 });
  });

  console.log({
    data: await this.getdeviceAllocationById(temp_deviceAllocation._id),fields: fields,});

我通过记录字段值进行检查,但在此处显示未定义,当我在 foreach 中单独注销这些值时,它将显示值。我尝试在 foreach 中返回值,但它仍然显示为空。

如果我错过了什么,请纠正我。

解决方法

试试

    let fields = temp_deviceAllocation.devices.forEach(async (device) => {
       return await device_model
      .findOne({ device_id: device })
      .select({ fields: 1 });
  });

  console.log({
    data: await this.getdeviceAllocationById(temp_deviceAllocation._id),fields: fields,});
,

默认情况下 forEach 是异步不知道的,因此无需等待承诺首先解决即可触发多个调用。因此,您应该避免在 forEach 中使用 await,而可以使用 for of 循环。 我认为这应该有效,从我从你的代码块中可以看出:

const deviceFields = []
for(const device of temp_deviceAllocation.devices){    
   const fields = await device_model
     .findOne({ device_id: device })
     .select({ fields: 1 });
   });
   deviceFields.push(fields)
}
console.log(deviceFields)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。