javascript - NodeJS - 如何使 forEach 和 for 循环函数顺序化

标签 javascript node.js youtube bots discord

server.queue.forEach(function(q) {
    YTDL.getInfo(q, (error, info) => {
        console.log(info["title"]);
        message.reply('"' + info["title"] + '"');
    });
});

for (var i = 0; i < server.queue.length; i++) {
    YTDL.getInfo(server.queue[i], (error, info) => {
         console.log(info["title"]);
         message.reply('"' + info["title"] + '"');
    });
}

我正在使用 Node.js 创建一个名为 Discord 的 VoIP 音乐机器人,无论何时执行上述任一循环,它们都会以随机顺序打印。我如何才能使它们按顺序打印(server.queue[0]、server.queue[1]、server.queue[2]...)? YTDL 是一个名为 ytdl-core 的包,它可以下载 YouTube 视频并使用视频链接显示视频标题等信息。 server.queue 是一组 YouTube 视频链接。

最佳答案

简单地:

1) 安装:npm i --save async

2) 和代码:

const async = require('async');

async.eachSeries(
  server.queue,
  (q, next) => {
    YTDL.getInfo(q, (error, info) => {
        console.log(info["title"]);
        message.reply('"' + info["title"] + '"');
        next();
    });
  }
});

for..loop 不是异步内容的好解决方案 - 它会调用它们并运行 for 循环之后的下一个语句

关于javascript - NodeJS - 如何使 forEach 和 for 循环函数顺序化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45644532/

相关文章:

javascript - 如何使用 lodash 对嵌套数组进行排序

javascript - 为什么用 document.write() 写 &lt;script&gt; 标签时要拆分它?

javascript - 检查对象和属性是否存在

node.js - socket.io 私信

youtube - 如何通过API获取所有列表YouTube channel ?

javascript - 为什么我不能在此对象文字中创建等于全局函数的方法? (javascript)

javascript - 进度条 AJAX 和 PHP

javascript - JSON.parse 出现问题,不知道为什么没有解析所有内容

javascript - 订阅youtube js

javascript - 努力按需加载 Youtube 播放器而不是传统的嵌入