首页 > 解决方案 > 你如何使用 then 回调和承诺

问题描述

我需要有关承诺和then回调的帮助。
我试过阅读指南,但不明白。

var lastMessage = msg.channel.fetchMessages({ limit: 2 }).then(messages => {
  return messages.last();
})

这返回Promise { < pending > }

标签: node.jsdiscord.js

解决方案


.then()语句不会让程序等待它们完成,它们只是在它们附加到的Promise被解决后执行它们的代码。
您可以决定将其余代码移到该.then()语句中(但它会变得非常混乱)或使用async/await.
如果您在函数内部,则可以将其声明为async function: 允许您在await其中使用关键字。await使程序等待 Promise 解决,而不是 Promise 它返回您将在.then()函数中使用的值。
这是一个例子:

client.on('message', async () => {
  // You can do everything you would normally do here
  // Using the 'async' keyword allows you to later user 'await'
  var lastMessage = await msg.channel.fetchMessages({ limit: 2 }).then(messages => {
    return messages.last();
  });
});

部分改编自这个答案(也是我的)


推荐阅读