附加到数组(JavaScript)

时间:2018-03-15 17:00:13

标签: javascript

我正在尝试使用.push附加到数组。 似乎这不会发生,这是我的代码。

if(message.content.toLowerCase().startsWith('!startvote')) {
    let args = message.content.slice(1).trim().split(/ +/g);
    let command = args.shift().toLowerCase();
    let totalOptions = [];

    message.channel.send(`Starting vote. Use !vote1, to vote for the first option, !vote2 for the second, etc.`);
    message.channel.awaitMessages(msg => msg.content.startsWith('!vote1'), {time: 10000})
      .then(collected => message.channel.send(collected.size + ' users voted for \`option 1\`'))
      .then(collected => totalOptions.push({'optionOne': collected.size}))
      .catch(console.error);
    message.channel.awaitMessages(msg => msg.content.startsWith('!vote2'), {time: 10000})
      .then(collected => message.channel.send(collected.size + ' users voted for \`option 2\`'))
      .then(collected => totalOptions.push({'optionTwo': collected.size}))
      .catch(console.error);
  }

每当我尝试将其记录到其他地方时,数组都会返回空。

编辑:这是新代码

message.channel.awaitMessages(msg => msg.content.startsWith('!vote1'), {time: 10000})
  .then(collected => message.channel.send(collected.size + ' users voted for \`option 1\`'))
  .then(collected => totalOptions.push({'optionOne': collected.size}))
  .then(console.log(totalOptions))
  .catch(console.error);
message.channel.awaitMessages(msg => msg.content.startsWith('!vote2'), {time: 10000})
  .then(collected => message.channel.send(collected.size + ' users voted for \`option 2\`'))
  .then(collected => totalOptions.push({'optionTwo': collected.size}))
  .then(console.log(totalOptions))
  .catch(console.error);

1 个答案:

答案 0 :(得分:0)

由于异步代码,您可能正在输出totalOptions,因为它已在then块中更新。

尝试在推送的块之后添加一个额外的then()块,然后在new then()中添加console.log(totalOptions)。