我想用不同数量的输入来运行这段代码,因为我正试图启动一个npm库。我唯一的问题是,我不知道如何实现我想要的东西。
基本上,我希望函数 "testfunc(){}"能够运行一行特定的代码,每次用一个参数替换其中的一部分。下面是一个例子。
function testfunc{
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[1]);
console.log(arguments[2]);
console.log(arguments[3]);
console.log(arguments[4]);
console.log(arguments[5]);
}
}
这是我现在的一个例子。我想让用户能够改变消息的编辑次数。
client.on('message', message => {
if(message.content == '69'){
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
function animate() {
for (var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
message.channel.send(arguments[1]).then((sentMessage) => wait(1*1000).then((waitDone) => sentMessage.edit(arguments[i])))
// message.channel.send(arguments[1]).then((sentMessage) => {
// wait(1*1000).then((waitDone) => sentMessage.edit(arguments[1])).then((sentMessage) => {
// wait(1*1000).then((waitDone) => sentMessage.edit(arguments[2])).then((sentMessage) => {
// wait(1*1000).then((waitDone) => sentMessage.edit(arguments[3])).then((sentMessage) => {
// wait(1*1000).then((waitDone) => sentMessage.edit(arguments[4]))
// })
// })
// })
// })
// }
}
animate('1','2','3','4')
}}})
client.login(token);
我相信可能有一个简单的答案我在这里忽略了,我已经开始研究做一个while循环的想法,但我不能完全理解...
使用 async/await
这可以大大简化。基本上,你只需迭代函数的参数,并等待每个异步调用,然后再继续处理下一个参数。
async function animate() {
// send with the first argument
const sentMessage = await message.channel.send(arguments[0]);
// continue editing with the remaining args
for (let i=1; i < arguments.length; i++) {
await wait(1000);
await sentMessage.edit(arguments[i]);
}
}