Запуск переменного количества строк в зависимости от количества переданных аргументов - PullRequest
1 голос
/ 17 июня 2020

Я хочу запустить этот код с различным количеством входных данных, так как я пытаюсь запустить библиотеку npm. Моя единственная проблема в том, что я не могу понять, как выполнить sh то, что я пытаюсь сделать.

В основном я хочу, чтобы функция «testfun c () {}» могла запускать определенные c строка кода, каждый раз заменяя ее часть аргументом. Пример ниже:

  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);

Я уверен, что, вероятно, есть простой ответ, который я здесь замалчиваю, я начал искать в идею сделать какое-то время l oop, но я не могу понять этого ...

1 Ответ

0 голосов
/ 17 июня 2020

Используя async/await, это можно значительно упростить. В основном вы просто перебираете аргументы функции и ожидаете каждого из вызовов asyn c, прежде чем продолжить со следующим аргументом:

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]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...