如何解决如何在执行 .then 之前等待异步函数中的回复
我正在尝试等待用户在 .then 触发之前选择一个年龄,但我无法这样做。将函数拆分而不是使用 .then 会更好吗?
谢谢
async function x() {
await ctx
.reply(
'Select your age',Markup.keyboard([
['10'],['11'],['12'],])
.oneTime()
.resize()
)
.then(() => {
admin
.database()
.ref('users/' + ctx.message.chat.id)
.set({
username: ctx.message.from.first_name,rank: ctx.message.text,});
});
}
解决方法
您可以使用异步等待用户重播。
当用户向您发送请求时,您需要创建不同的反应。
,异步函数的优势只有在您将其与 await 关键字结合使用时才会变得明显。 await 仅适用于常规 JavaScript 代码中的异步函数,但它可以单独用于 JavaScript 模块。
await 可以放在任何基于异步 promise 的函数前面,以暂停该行上的代码,直到 promise 实现,然后返回结果值。
您可以在调用任何返回 Promise 的函数(包括 Web API 函数)时使用 await。
async function x() {
let results = await ctx.reply('Select your age',Markup.keyboard([
['10'],['11'],['12'],])
.oneTime()
.resize()
);
if (results) {
admin
.database()
.ref('users/' + ctx.message.chat.id)
.set({
username: ctx.message.from.first_name,rank: ctx.message.text,});
}
else {
// log error or throw error
}
}
您可以查看此 link 以获取有关如何将 Promise 与 async/await 结合使用的更多详细信息
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。