首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在从google api向discord.js发送数据时,如何避免未决的承诺?

在从google api向discord.js发送数据时,如何避免未决的承诺?
EN

Stack Overflow用户
提问于 2019-06-10 01:05:07
回答 1查看 631关注 0票数 -1

我正在开发一个不和谐的机器人,它可以从Excel表格中提取数据。例如,当我询问机器人:"!adress paul“时,我希望机器人在工作表的A列中查找" Paul”值,并在discord应用程序中返回B列(值为Paul的行)的值。

到目前为止,我成功地从Excel表格读取数据并在console.log中报告数据(当我在函数中调用console.log时)。但是,每次我调用函数外部的值时,都会出现一个“Promise{}”...我在网上做了很多研究,都没有找到解决方案。

代码语言:javascript
复制
const discord = require('discord.js');
const {google} = require('googleapis');
const keys = require('./identifiants.json');


// Creation of the Spreadsheet client
const client1 = new google.auth.JWT(keys.client_email, null, 
keys.private_key, ['https://www.googleapis.com/auth/spreadsheets']);

client1.authorize(function(err, tokens)
{   
    if(err)
    {
        console.log(err);
        return;
    } 
    else
    {
        console.log('Connected to Google Sheets');
    }   
});

// Creation of the Discrod client
const client2 = new discord.Client();

client2.on('ready', () => 
{
    console.log('Connected to Discord');
});

// Create an event listener for messages
client2.on('message', message => 
{
    if (message.content === '!address') 
    { 
        console.log("OK 1");

        let paul = address(client1);
        console.log(paul);
        console.log("OK2");
    }
});

async function address(client)
{   
    const gsapi = google.sheets({version:'v4',auth: client });
    const opt1 = {spreadsheetId: 'ID OF MY SPREADSHEET', range: 'Sheet1!A1:B3'};

    let data = await gsapi.spreadsheets.values.get(opt1);
    return data.data.values;
}

client2.login("MY CLIENT LOGIN")

在控制台中,"Promise {pending}“消息出现在"OK1”和"OK2“之间。有人能帮我处理一下那个箱子吗?我将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 01:41:55

您的address函数是一个异步函数,因此它将返回promise。

因此,您需要使用then来获取该值:

代码语言:javascript
复制
client2.on('message', message => {
  if (message.content === '!address') { 

    address(client1)
      .then(paul => {
        console.log(paul);
      });

  }
});

或者,您也可以使用等待异步

代码语言:javascript
复制
client2.on('message', async (message) => {
  if (message.content === '!address') { 

    let paul = await address(client1);
    console.log(paul);

  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56516663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档