javascript - 异步函数返回 [object Object] 而不是 value
问题描述
在调用异步函数时,我希望它返回一个 JSON 有效负载,以便我可以从对象中提取一个值。但是,该函数只返回[object Object]
异步函数在普通函数中被调用,所以我尝试将父函数更改为异步函数。这对我有帮助,因为最初我只获得了[object Promise]
最初,我正在尝试这样做:
const sendRequestToApprover = (userId, announcement, username) => {
const { title, details, channel } = announcement;
const channelName = channels.getChannelName(channel);
console.log('channelName' + channelName);
看起来getChannelName
像:
async function getChannelName(id) {
try {
return await api.get('/channels.info', {
params: {
token: botToken,
channel: id,
}
});
} catch (err) {
console.log(err);
}
}
[object Promise]
我能够通过对以下内容进行以下更改来解决获取问题sendRequestToApprover
:
async function sendRequestToApprover(userId, announcement, username) {
const { title, details, channel } = announcement;
const channelName = await channels.getChannelName(channel);
console.log('channelName' + channelName);
请注意,它现在是一个异步函数,我添加await
到函数调用中。
我知道调用的有效负载将返回以下内容:
{
"ok": true,
"channel": {
"id": "CJSFDR83T",
"name": "general",
...
}
在这种情况下,我无法弄清楚为什么我无法得到这个名字。我已经在其他功能中做到了这一点,而这个让我很难过。channelName
还在回归[object Object]
。
解决方案
当你这样做时:
console.log("channelName" + channelName);
您在toString
上调用该方法channelName
,并且在一个对象上这会导致[object Object]
.
console.log("Object.toString() -> " + { foo: "bar" });
您可以通过将另一个参数传递给console.log
.
console.log("Object.toString() -> ", { foo: "bar" });
推荐阅读
- r - 关于 bind_rows() 的非常简单但令人困惑的 R 问题
- curl - 邮递员 cURL 使用简写 -d 而不是 --data-raw
- android - 在 Compose 中使用 XML Android 动画
- object - 如何阅读 messagebird 的 Web 响应的每个字段
- reactjs - Next.js、npm 链接和 nvm:错误 / 重复 /.nvm/versions/ 路径部分
- favorites - 工作室 android 最喜欢的 firebase
- yaml - 使用 yq 解析属性文件数据模型
- python - 如何使用beautifulsoup从元素中获取属性?
- algorithm - 链表中的插入排序
- discord.js - Discord.js 代码不起作用。我应该给成员一个角色,但它说 add 是未定义的