为了账号安全,请及时绑定邮箱和手机立即绑定

异步函数返回 [object Object] 而不是值

异步函数返回 [object Object] 而不是值

30秒到达战场 2021-06-15 13:08:42
在调用异步函数时,我希望它返回一个 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]。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

当你这样做时:

console.log("channelName" + channelName);

您正在调用toString方法 on channelName,并且在一个对象上调用这会导致[object Object].


console.log("Object.toString() -> " + { foo: "bar" });


您可以通过向 传递另一个参数来避免这种情况console.log


console.log("Object.toString() -> ", { foo: "bar" });


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 514 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信