顺序不和js的反应

时间:2017-09-04 22:56:25

标签: javascript node.js discord discord.js

我想添加一条带有反应的消息,但我希望反应有一定的顺序。问题是当我执行命令添加该消息时,反应会随机添加。

代码:



        case "helptest":
	indexTest = 0;
	comandUser = message.author.username;
	message.channel.send(mesajeTest[indexTest]).then(function (message) {
		message.react("⏪")
		message.react("▶")
		message.react("◀")
		message.react("⏩")
	});
	break;




我希望代码中的顺序在反应消息中,任何解决方案?

3 个答案:

答案 0 :(得分:5)

解决了异步功能

的问题

		case "helptest":
	indexTest = 0;
	comandUser = message.author.username;
	message.channel.send(mesajeTest[indexTest]).then(async function (message) {
		await message.react("⏪")
		await message.react("◀")
		await message.react("▶")
		await message.react("⏩")
	});
	break;

答案 1 :(得分:0)

您的发送功能到底是什么回报?承诺什么?也许多个Promise在第一个回调完成之前得到解决。

您是否尝试使用Promise.each()

  

使用 Promise.each()迭代按顺序进行。如果迭代器函数返回一个promise或一个thenable,那么在继续下一次迭代之前,等待promise的结果。

答案 2 :(得分:0)

正如OP所述,可接受的答案适用于此特定情况,但是我遇到了一个类似的问题,但是生成了我的emoji表情:因此,在行上键入它们不是一个选择。因此,我自然地尝试查看所有内容,并及时等待。但是,节点对此似乎很聪明,并优化了代码以并行而不是顺序运行。我最终不得不使用reduce将所有的承诺折叠成一个承诺:

[...array of emojis...].reduce((promise, emoji) => promise.then(() => message.react(emoji)), Promise.resolve());

即使有一个可接受的答案,我也将在此保留该答案,以希望其他人可能会有所帮助。