[英]Async Function returns promise
我有一个 function 返回 Discord.JS 中的公会前缀:
获取前缀.js:
const GuildSchema = require("../Database/Models/GuildConfigs");
const { DEFAULT } = require("./config");
const getprefix = async (id) => {
const guildConfigs = await GuildSchema.findOne({
GuildID: id,
});
let PREFIX = DEFAULT;
if (guildConfigs && guildConfigs?.Prefix) {
PREFIX = guildConfigs?.Prefix;
}
};
module.exports = { getprefix };
我使用这个在另一个文件中调用 function:
let prefix = getprefix(message.guild.id);
prefix.then(() => {
console.log(prefix);
});
问题是它在控制台中返回:
Promise { '!' }
是否可以只返回引号内的实际前缀而没有 Promise?
可以,但您必须从异步 function 返回值。
获取前缀.js:
const GuildSchema = require("../Database/Models/GuildConfigs");
const { DEFAULT } = require("./config");
const getprefix = async (id) => {
const guildConfigs = await GuildSchema.findOne({
GuildID: id,
});
let PREFIX = DEFAULT;
if (guildConfigs && guildConfigs?.Prefix) {
PREFIX = guildConfigs?.Prefix;
}
return PREFIX;
};
module.exports = { getprefix };
并更改呼叫:
let prefix = getprefix(message.guild.id);
prefix.then((value) => {
console.log(value);
});
首先,您必须从名为getprefix
的异步 function 返回一个值。 其次,您必须console.log
记录 getprefix function 而不是 promise 本身返回的getprefix
的结果:
const getprefix = async (id) => {
const guildConfigs = await GuildSchema.findOne({GuildID: id});
if (!guildConfigs || !guildConfigs.Prefix) {
return DEFAULT;
}
return guildConfigs.Prefix;
};
getprefix(message.guild.id).then(prefix => console.log(prefix));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.