await 仅对异步函数有效城市字典 api discord js

Posted

技术标签:

【中文标题】await 仅对异步函数有效城市字典 api discord js【英文标题】:await only valid with async function urban dictionary api discord js 【发布时间】:2021-05-01 09:30:47 【问题描述】:

知道如何解决这个问题吗?我尝试将异步功能放入其中,但无法使其正常工作。我不太确定如何或在何处添加异步功能,以及如何让两者一起工作。非常感谢任何帮助,这是针对不和谐的 javascript 机器人的。

client.on('message', message => 
if (message.content.startsWith(`$PREFIXurban`)) 
  if (!args.length) 
    return message.channel.send('You need to supply a search term!');
  

    const query = querystring.stringify( term: args.join(' ') );
  const  list  = await fetch(`https://api.urbandictionary.com/v0/define?$query`).then(response => response.json());
  
  if (!list.length) 
    return message.channel.send(`No results found for **$args.join(' ')**.`);
  

  const [answer] = list;

  const embed = new Discord.MessageEmbed()
    .setColor('#EFFF00')
    .setTitle(answer.word)
    .setURL(answer.permalink)
    .addFields(
       name: 'Definition', value: trim(answer.definition, 1024) ,
       name: 'Example', value: trim(answer.example, 1024) ,
       name: 'Rating', value: `$answer.thumbs_up thumbs up. $answer.thumbs_down thumbs down.` ,
    );
  message.channel.send(embed);

);

【问题讨论】:

添加了一个答案,让我知道它是否有效 ***.com/… 【参考方案1】:

为了运行您的await 命令,您必须将async 放在代码的顶部。有关awaitasync 工作原理的更多信息,请查看link provided by VLAZ。

//put the async right before the second message, that's it
client.on('message', async message => 
if (message.content.startsWith(`$PREFIXurban`)) 
  if (!args.length) 
    return message.channel.send('You need to supply a search term!');
  

    const query = querystring.stringify( term: args.join(' ') );
  const  list  = await fetch(`https://api.urbandictionary.com/v0/define?$query`).then(response => response.json());
  
  if (!list.length) 
    return message.channel.send(`No results found for **$args.join(' ')**.`);
  

  const [answer] = list;

  const embed = new Discord.MessageEmbed()
    .setColor('#EFFF00')
    .setTitle(answer.word)
    .setURL(answer.permalink)
    .addFields(
       name: 'Definition', value: trim(answer.definition, 1024) ,
       name: 'Example', value: trim(answer.example, 1024) ,
       name: 'Rating', value: `$answer.thumbs_up thumbs up. $answer.thumbs_down thumbs down.` ,
    );
  message.channel.send(embed);

);

【讨论】:

以上是关于await 仅对异步函数有效城市字典 api discord js的主要内容,如果未能解决你的问题,请参考以下文章

await 仅在异步函数中有效 - 使用 mongoosejs exec() 时

异步/等待仅在读取文件时才是有效的异步函数[重复]

匿名函数的等待/异步

无法从异步函数获取返回值,等待未按预期工作(Vue API 服务)

javascript异步编程之generator(生成器函数)与asnyc/await语法糖

async函数