我正在尝试使用.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);
答案 0 :(得分:0)
由于异步代码,您可能正在输出totalOptions,因为它已在then块中更新。
尝试在推送的块之后添加一个额外的then()块,然后在new then()中添加console.log(totalOptions)。