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/