node.js - 你如何使用 then 回调和承诺
问题描述
我需要有关承诺和then
回调的帮助。
我试过阅读指南,但不明白。
var lastMessage = msg.channel.fetchMessages({ limit: 2 }).then(messages => {
return messages.last();
})
这返回Promise { < pending > }
。
解决方案
.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();
});
});
部分改编自这个答案(也是我的)
推荐阅读
- javascript - 使用 Javascript 从预先建立的颜色数组为 CSS 分配颜色
- geolocation - 如何检测坐标集之间的路径偏差
- vb.net - 根据某个范围获取特定的列表项
- java - 设置 onItemClick 将 ListView 项目数据传递给片段
- wordpress - Wordpress 插件:如何在 post_publish(draft-to-publish 等)事件上获取帖子标签?
- node.js - 如何使用nodejs和passport在我的应用程序中有两个不同的登录名?
- javascript - Fiori Launchpad cant start App (negative cache - sap.ui.define is not a function)
- android - 路线不会使用“Google-Directions-Android”库在地图上绘制
- python - 如何通过 Djangae 提高 Google Cloud Datastore 中的查询性能?
- python - python中的路径解析和拟合