При вызове асинхронной функции я ожидаю, что она возвратит полезную нагрузку 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]
.