Javascript 根据传递的参数数运行可变数量的行
我想用不同数量的输入运行这段代码,因为我正在尝试启动一个npm库。我唯一的问题是,我不知道如何完成我正在努力实现的目标 基本上,我希望函数“testfunc(){}”能够运行特定的代码行,每次都用一个参数替换其中的一部分。示例如下:Javascript 根据传递的参数数运行可变数量的行,javascript,node.js,variables,arguments,discord,Javascript,Node.js,Variables,Arguments,Discord,我想用不同数量的输入运行这段代码,因为我正在尝试启动一个npm库。我唯一的问题是,我不知道如何完成我正在努力实现的目标 基本上,我希望函数“testfunc(){}”能够运行特定的代码行,每次都用一个参数替换其中的一部分。示例如下: function testfunc{ for (var i = 0; i < arguments.length; i++) { console.log(arguments[1]); console.log(arguments[2
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]);
}
}
函数testfunc{
for(var i=0;i
这是我现在拥有的一个例子。我希望用户能够更改消息的编辑次数
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);
client.on('message',message=>{
如果(message.content='69'){
功能睡眠(ms){
返回新承诺(resolve=>setTimeout(resolve,ms));
}
const wait=ms=>newpromise(resolve=>setTimeout(resolve,ms));
函数animate(){
for(var i=0;iwait(1*1000)。然后((waitDone)=>sentMessage.edit(参数[i]))
//message.channel.send(参数[1])。然后((sentMessage)=>{
//等待(1*1000)。然后((waitDone)=>sentMessage.edit(参数[1])。然后((sentMessage)=>{
//等待(1*1000)。然后((waitDone)=>sentMessage.edit(参数[2])。然后((sentMessage)=>{
//等待(1*1000)。然后((waitDone)=>sentMessage.edit(参数[3])。然后((sentMessage)=>{
//等待(1*1000)。然后((waitDone)=>sentMessage.edit(参数[4]))
// })
// })
// })
// })
// }
}
设置动画('1'、'2'、'3'、'4')
}}})
client.login(令牌);
我相信这里可能有一个简单的答案,我已经开始考虑做一个while循环,但我不太明白…使用
async/wait
这可以大大简化。基本上,您只需迭代函数的参数,等待每个异步调用,然后再继续下一个参数:
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]);
}
}
async函数animate(){
//使用第一个参数发送
const sentMessage=wait message.channel.send(参数[0]);
//继续编辑剩余的参数
for(设i=1;i
使用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]);
}
}
async函数animate(){
//使用第一个参数发送
const sentMessage=wait message.channel.send(参数[0]);
//继续编辑剩余的参数
for(设i=1;i
只是为了让我正确理解您的问题-您想运行发送
,等待
,编辑
的顺序,就像动画
函数的参数长度一样频繁?@eol我只需要设置发送
,然后编辑
变量到不同的参数,但是,然后尽可能频繁地运行这些长度<代码>等待被定义为1秒,以便不受API限制。好的,我想我得到了,将发布一个答案:)以便我正确理解您的问题-您想运行发送
,等待
的序列,edit
与animate
函数的参数长度一样频繁?@eol我只需要将send
和edit
变量设置为不同的参数,然后根据长度运行这些变量<代码>等待被定义为一秒钟,以不受API限制的速率。好的,我想我明白了,我会发布一个答案:)这正是我所需要的,只需要大约2个月的编码时间。谢谢你的帮助:)很乐意帮忙:)这正是我所需要的,只需要大约两个月的时间就可以编写了。谢谢你的帮助:)很乐意帮忙:)