Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用异步方法返回的对象_Javascript_Google Api_Google Sheets Api - Fatal编程技术网

Javascript 使用异步方法返回的对象

Javascript 使用异步方法返回的对象,javascript,google-api,google-sheets-api,Javascript,Google Api,Google Sheets Api,我正在尝试做以下工作,但不幸的是没有成功: 1.读取电子表格并将其作为已解析的对象获取。 2.使用已解析的对象在其中查找特定值。e、 给我一封电子邮件 电子表格作为一个数据库,其动机是确定给定的电子邮件是否存在 显然,我误解了异步方法的使用,因为我不知道如何返回 调用方法: helpers.read('the-spreadsheet-id', 'Sheet1!A:Z'); @helpers/sheets.js的阅读方法: exports.read = (spreadsheetId, r

我正在尝试做以下工作,但不幸的是没有成功: 1.读取电子表格并将其作为已解析的对象获取。 2.使用已解析的对象在其中查找特定值。e、 给我一封电子邮件

电子表格作为一个数据库,其动机是确定给定的电子邮件是否存在

显然,我误解了异步方法的使用,因为我不知道如何返回

调用方法:

helpers.read('the-spreadsheet-id', 'Sheet1!A:Z');
@helpers/sheets.js的阅读方法:

    exports.read = (spreadsheetId, range) => {
  const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });

  return sheets.spreadsheets.values.get({
    spreadsheetId,
    range,
  })
    .then(_.property('data.values'));
};
为了在调用方法中获得一个json对象或类似解析的数据对象,我应该做什么


提前感谢。

要使异步步骤起作用,您必须声明您正在返回一个
承诺
,或者该函数为
异步
。Async/await实际上是在幕后使用承诺,但它的语法更简洁

对于
Promise
版本,必须使用
resolve
函数返回所需的值,并使用
reject
函数抛出错误

exports.read = (spreadsheetId, range) => {
    return new Promise((resolve, reject) => {
        const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });

        sheets.spreadsheets.values.get({
            spreadsheetId,
            range,
        })
        .then(data => {
            resolve(data.values);
        })
        .catch(err => reject(err));
    });
};
当您使用async/await时,可以将查询包装在try/catch中,如果查询失败,则抛出错误

exports.read = async (spreadsheetId, range) => {
    const sheets = google.sheets({ version: 'v4', auth: oAuth2Client });
    try {
        const data = await sheets.spreadsheets.values.get({
            spreadsheetId,
            range,
        })
        return data.values;
    } catch(err) {
        throw err;
    }
};

我不使用下划线,所以我不确定您试图返回这里的内容。我假设
数据
是查询的结果,您试图传递

helpers.read返回什么?您正在取回写入数据对象吗?您具体卡在哪里了?使用调试器,我似乎没有看到helpers.read返回的任何对象。