Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过js中的数组进行迭代_Javascript_Node.js_Electron_Discord - Fatal编程技术网

Javascript 通过js中的数组进行迭代

Javascript 通过js中的数组进行迭代,javascript,node.js,electron,discord,Javascript,Node.js,Electron,Discord,这段代码应该遍历数组中的每个webhook,并使用它们发送消息。它将它们打印到控制台,这意味着它们就在那里,并且它可以检测到它们,但是只有一个webhook被调用(当使用两个webhook进行测试时)有一些事情可能会给您带来问题。最值得注意的是,您需要创建一个新的XMLHttpRequest() var webhook_array=webhook_url.split(“,”); log(webhook_数组); 功能发送(项目){ console.log(项目) /**在此处创建请求*/ co

这段代码应该遍历数组中的每个webhook,并使用它们发送消息。它将它们打印到控制台,这意味着它们就在那里,并且它可以检测到它们,但是只有一个webhook被调用(当使用两个webhook进行测试时)

有一些事情可能会给您带来问题。最值得注意的是,您需要创建一个新的XMLHttpRequest()


var webhook_array=webhook_url.split(“,”);
log(webhook_数组);
功能发送(项目){
console.log(项目)
/**在此处创建请求*/
const request=new XMLHttpRequest();
/**现在该工作了*/
请求。打开(“POST”,项目);
setRequestHeader('Content-type','application/json');
//其他代码。。。
send(JSON.stringify(params));
}
webhook_array.forEach(send);

您包含的示例还有一些未定义的变量(
avatarurl
webhook\u username
)和一个额外的大括号。确保这些都在你的代码中的其他地方:它们可能只是文件中没有进入你的问题的一部分。希望这有帮助

您的意思是您的项目正在“console.log(item)”中打印,但没有发出http请求?是的,没错……您需要使用
async/wait
并等待每个http操作完成,然后再进行下一个操作。通常对于异步等待模式,使用forEach不是一个好主意。相反,将整个代码包装在一个匿名
async
函数中,并在每个函数调用中使用wait使用
for
循环遍历每个web_钩子。此外,假设请求<代码>是XHR对象,您可以考虑使用<代码> FETCH < /Cord> API,因为您可以在它们上面使用<代码>等待< /代码>。如果您在理解上有困难,我也可以编写代码。@lanxion为什么我需要等待一个请求完成后才能继续?我当然可以同时发送多个请求。您是否检查了JSON.stringify(params)调用中是否存在异常?我注意到在使用avatarurl的行中有一个多余的逗号。可能这会导致序列化出现问题,并导致request.send()失败?未定义的变量是因为这不是完整的代码,只足以复制我的问题。这些变量确实有值。
  var webhook_array = webhook_url.split(",");
  console.log(webhook_array);
  function send(item) {
    console.log(item)
    request.open("POST", item);
    request.setRequestHeader('Content-type', 'application/json');
  
    var myEmbed = {
      title: embed_title,
      color: hexToDecimal(hexcolour),
      description: message_content,
      footer: {
        text: "Powered by Yapplex Tools",
        icon_url: avatarurl,
      }
    }
    
    var params = {
      username: webhook_username,
      avatar_url: avatarurl,
      embeds: [ myEmbed ]
    }
    request.send(JSON.stringify(params));
  }
  webhook_array.forEach(send);

  function hexToDecimal(hex) {
    return parseInt(hex.replace("#",""), 16)
  }
}