如何解决承诺?

我正在经历一个非常麻烦的时间,弄清楚如何做好承诺。 我在Node.js上为DiscordApp制作了一个聊天机器人,我在这里search了大量的内容,而且一般都是Google。 我试过使用Promise.all和一个asynchronous函数。 他们没有工作,但我觉得我做错了什么。

目前回到我开始使用我的代码的地方

 let emoji = ['1⃣', '2⃣', '3⃣', '4⃣', '5⃣', '6⃣', '7⃣', '8⃣', '9⃣'] msg.channel.send('some message being sent') .then(sentMessage => { poll.users[msg.author.id].forEach(function(item, index) { sentMessage.react(emoji[index]) }) }) 

这导致有时对消息的反应,如果不是大多数时候,混合起来。 正如你所看到的,表情符号是数字,所以我希望它们按顺序排列。 由于.react()是一个承诺,他们随机解决,如前所述,数字emojis混合起来。 如果我想让他们按顺序解决,我怎么能这样做呢?

我试过的东西: Promise.all

 msg.channel.send('some message being sent') .then(sentMessage => { foo(poll, msg, sentMessage, index) }) async function foo(poll, msg, embedded, voteCount) { return await Promise.all(poll.users[msg.author.id].map(() => { embedded.react(nums[voteCount]) })) } 

也许你想试试这个:

 msg.channel.send('some message being sent') .then(sentMessage => { const result = poll.users[msg.author.id].reduce((p, c, i) => p.then(() => sentMessage.react(emoji[i])), Promise.resolve()); result.then(() => { console.log('all emojis shall be sent in order'); }); })