我将如何只使用此代码选择一定数量的行?

How would I go about only selecting a certain number of lines with this code?

我如何使用这段代码只选择一定数量的行? 我对使用 line 有一个粗略的了解,但从那时起我不知道如何确保它只从 txt 文件中获取例如 5 行帐户或 10 个帐户等....

下面的代码来自我之前在这里提出的一个问题:

const readline = require("readline");
const fs = require("fs");

const rl = readline.createInterface({
    input: fs.createReadStream(__dirname + "/accounts.txt"),
});

rl.on("line", (line) => {
    const [username, password] = line.split(':');
    console.log(`${username}${password}`)
});

我找到了一个“可能”的解决方案,但它不会在达到所需数量时停止计数。

const line_counter = ((i = 0) => () => ++i)();

rl.on("line", (line, num = line_counter()) => {
    console.log(num)
    if (num === 10) {
        const [username, password] = line.split(':');
        console.log(`${username}${password}`);
        console.log("10")
    }
    //extra code
})

小说明: 我有一个配置系统,它是这样的:

config = {
        "yourroleid": 1500,
        "yourroleid": 75,
        "yourroleid": 50,
        "yourroleid": 20,
        "yourroleid": 10,
        "yourroleid": 5
    } 

考虑到这一点,具有所述角色 (roleid) 的人只能从列表中获得例如 5 个帐户或 10 个帐户。 而且它只会做那么多,而不是连续的帐户“垃圾邮件”。

为了实现提前退出 readline 的目标,您需要使用 for await (const line of target) { 语法而不是 .on("line", 方法。

let limit = 0;
for await (const line of rl) {
    limit++;
    const [user, pass] = line.split(":");
    //do stuff
    if (limit === 10) break;
}

根据澄清评论/目标对话进行编辑